ActiionScript 3.0 常用异常类总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值