您的位置:首页 > 其它

ActiionScript 3.0 常用异常类总结

2012-07-21 22:54 344 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: