ActiionScript 3.0 常用异常类总结
ArgumentError类
ArgumentError类:表示一种错误,如果函数提供的参数与为该函数定义的参数不一致,则会出现该错误。 例如,如果在调用函数时使用了错误的参数数目、不正确的参数类型或无效参数,则会发生此错误。
try {
this["println"]("Hello", "World");
}
catch(e:ArgumentError) {
trace(e);
}
对应函数
public function println(str:String):void {
trace(str);
}
// 完整代码
package {
import flash.display.Sprite;
public class ArgumentErrorExample extends Sprite {
public function ArgumentErrorExample() {
println("Hello World");
try {
this["println"]("Hello", "World");
}
catch(e:ArgumentError) {
trace(e);
}
}
public function println(str:String):void {
trace(str);
}
}
}
EOFError:
如果尝试读取的内容超出可用数据的末尾,则会引发 EOFError 异常。 例如,当调用 IDataInput 接口中的一个读取方法,而数据不足以满足读取请求时,将引发 EOFError。
try {
trace(byteArr.readBoolean());
}
catch(e:EOFError) {
trace(e); // EOFError: Error #2030: End of file was encountered.
}
// 完整代码
package {
import flash.display.Sprite;
import flash.errors.EOFError;
import flash.utils.ByteArray;
public class EOFErrorExample extends Sprite {
public function EOFErrorExample() {
var byteArr:ByteArray = new ByteArray();
byteArr.writeBoolean(false);
trace(byteArr.length); // 1
byteArr.position = 0;
try {
trace(byteArr.readBoolean()); // false
}
catch(e:EOFError) {
trace(e);
}
try {
trace(byteArr.readBoolean());
}
catch(e:EOFError) {
trace(e); // EOFError: Error #2030: End of file was encountered.
}
}
}
}
Error类:
包含有关脚本中出现的错误的信息。 开发 ActionScript 3.0 应用程序过程中,如果在 Flash Player 的调试版中运行已编译的代码,将弹出对话框显示 Error 类型的异常或子类异常,以帮助您排除代码中的故障。 可以使用 Error 构造函数来创建 Error 对象。 通常,将新的 Error 对象从 try 代码块中引发,然后由 catch 或 finally 代码块捕获。
您也可以创建 Error 类的子类,然后引发该子类的实例。
// 完整代码
package
{
import flash.display.Sprite;
public class ErrorExample extends Sprite
{
private var nullArray:Array;
public function ErrorExample()
{
try
{
nullArray.push("item");
}
catch(e:Error)
{
throw new CustomError("nullArray is null");
}
}
}
}
class CustomError extends Error
{
public function CustomError(message:String)
{
super(message);
}
}
EvalError类:
表示一种错误,如果用户代码调用 eval() 函数或试图将 new 运算符用于 Function 对象,则会出现该错误。 不支持调用 eval() 和使用 Function 对象调用 new。
IOError类:
某些类型的输入或输出失败时,将引发 IOError 异常。 例如,如果在尚未连接的或已断开连接的套接字上尝试读/写操作,将引发 IOError 异常。
// 完整代码
package {
import flash.display.Sprite;
import flash.errors.IOError;
import flash.media.Sound;
public class IOErrorExample extends Sprite
{
public function IOErrorExample()
{
var music:Sound = new Sound();
try {
music.close();
trace("Stream closed.");
} catch (error:IOError) {
trace("The stream could not be closed, or the stream was not open.");
}
}
}
}
RangeError类:
如果数值不在可接受的范围内,则会引发 RangeError 异常。 使用数组时,引用不存在的数组项的索引位置将会引发 RangeError 异常。 如果参数不在可接受的数字范围内,则使用 Number.toExponential()、Number.toPrecision() 和 Number.toFixed() 方法将引发 RangeError 异常。 可以扩展 Number.toExponential()、Number.toPrecision() 和 Number.toFixed() 以避免引发 RangeError。
// 完整代码
package {
import flash.display.Sprite;
public class RangeErrorExample extends Sprite {
public function RangeErrorExample() {
var child:Sprite = new Sprite();
try {
addChildAt(child, 1);
}
catch(e:RangeError) {
trace(e);
}
}
}
}
TypeError类:
如果操作数的实际类型与所需类型不同,将引发 TypeError 异常。
另外,在以下情况还将引发此异常:
无法将函数的实际参数或方法强制为正式参数类型。值已赋给变量,但无法强制为变量的类型。 is 或 instanceof 运算符右侧的内容不是有效类型。 非法使用了 super 关键字。属性查找生成了多个绑定,因此该查找不明确。 在一个不兼容的对象调用了某种方法。 例如,如果将 RegExp 类方法“转接”到通用对象上,然后调用,将引发 TypeError 异常。
// 完整代码
package {
import flash.display.DisplayObject;
import flash.display.Sprite;
public class TypeErrorExample extends Sprite {
public function TypeErrorExample() {
try {
var child:Object = new Object();
addChild(DisplayObject(child));
}
catch(e:TypeError) {
trace(e);
}
}
}
}
By Andy @ 2012-07-21 22:55