ActionScript 3.0 中的错误处理
Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本
由于许多应用程序在没有构建错误处理逻辑的情况下也可以运行,因此开发人员往往会拖延在其应用程序中构建错误处理逻辑。但如果没有错误处理逻辑,应用程序很容易终止运行,或因某一操作无法按预期执行而让用户感到烦恼。ActionScript 2.0 具有一个 Error 类,可用来在自定义函数中构建逻辑,以便引发具有特定消息的异常。由于错误处理对于构建用户友好的应用程序至关重要,因此 ActionScript 3.0 提供了一个扩展的体系结构用来捕获错误。
ActionScript 3.0 错误处理的构成元素
ActionScript 3.0 提供了许多用来进行错误处理的工具,其中包括:
-
错误类。ActionScript 3.0 中包括大量 Error 类,扩展了可产生错误对象的情形范围。每个错误类都可以帮助应用程序处理和响应特定的错误条件,无论这些错误条件是与系统错误相关(如 MemoryError 条件)、与代码编写错误相关(如 ArgumentError 条件)、与网络和通信错误相关(如 URIError 条件),还是与其他情形相关。有关每个类的详细信息,请参阅
比较错误类
。
-
更少的无提示失败。在 Flash Player 以前的版本中,只有明确使用了
throw
语句,才会产生并报告错误。对于 Flash Player 9 和最新的 Flash 运行时,本机 ActionScript 方法和属性会引发运行时错误。这些错误允许您更有效处理发生的异常,然后逐个响应每个异常。
-
在调试期间显示清楚的错误消息。使用 Flash 运行时调试器版本时,有问题的代码或情形会生成可靠的错误消息,这有助于您轻松识别特定代码块失败的原因。这些消息有助于更高效地修复错误。有关详细信息,请参阅
使用 Flash 运行时的调试版
。
-
精确的错误指示可以向用户显示清楚的错误消息。在 Flash Player 的先前版本中,如果
upload()
调用不成功,则
FileReference.upload()
方法会返回布尔值
false
,表示发生了五个可能错误中的一种。如果在 ActionScript 3.0 中调用
upload()
方法时出错,四个特有的错误有助于向最终用户显示更准确的错误消息。
-
经过优化完善的错误处理。一些明显的错误是由许多常见原因引发的。例如,在 ActionScript 2.0 中,在填充 FileReference 对象之前,
name
属性的值为
null
(因此,在您可以使用或显示
name
属性前,请确保已将此值设置为
null
之外的值)。在 ActionScript 3.0 中,如果在填充
name
属性之前试图访问该属性,Flash Player 或 AIR 将引发 IllegalOperationError,通知您尚未设定该值,这时您可以使用
try..catch..finally
块来处理该错误。有关详细信息,请参阅
使用 try..catch..finally 语句
。
-
没有明显的性能缺点。与以前的 ActionScript 版本相比,使用
try..catch..finally
块仅占用很少的额外资源或根本不占用任何额外资源。
-
允许针对特定异步错误事件构建侦听器的 ErrorEvent 类。有关详细信息,请参阅
响应错误事件和状态
。
错误处理策略
只要应用程序未遇到会导致问题的情况,则即使未在程序代码中构建错误处理逻辑,应用程序仍然可以成功运行。但是,如果您没有主动处理错误,并且应用程序确实遇到了问题,用户在应用程序失败时将无从知道原因所在。
在应用程序中进行错误处理有几种不同的方式。下面概括介绍三种主要的错误处理方式:
-
使用
try..catch..finally
语句。这些语句可以在发生同步错误时捕捉这些错误。可以将语句嵌套在一个层次中,以便在不同的代码执行级别捕获异常。有关详细信息,请参阅
使用 try..catch..finally 语句
。
-
创建您自己的自定义错误对象。您可以使用 Error 类创建您自己的自定义错误对象,以便跟踪应用程序中内置错误类型未涵盖的特定操作。然后,您可以对自定义错误对象使用
try..catch..finally
语句。有关详细信息,请参阅
创建自定义错误类
。
-
编写用以响应错误事件的事件侦听器和处理函数。使用此策略,您可以创建全局错误处理程序以处理类似事件,而无需在
try..catch..finally
代码块中复制许多代码。您还可以使用此方法来捕获异步错误。有关详细信息,请参阅
响应错误事件和状态
。
|
|
|