错误处理基础知识

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

运行时错误是指阻止 ActionScript 内容按预期运行的 ActionScript 代码错误。要确保用户可以顺利运行您的 ActionScript 代码,请在应用程序中编写可以处理错误的代码,该代码可以修复、解决错误,或者至少可以让用户了解已发生了此问题。此过程称为“错误处理”。

错误处理涵盖的内容很广,它包括对编译期间或应用程序运行时引发的许多种错误予以响应。在编译时出现的错误通常比较容易识别 — 您只需修正这些错误即可完成创建 SWF 文件的过程。

运行时错误可能更难于检测,因为必须实际运行错误代码才会发生这些错误。如果程序片断包含几个代码分支(如 if..then..else 语句),利用实际用户可能使用的所有可能的输入值测试每种可能的情况,以确认代码没有错误。

运行时错误可以分为以下两类:“程序错误”是指 ActionScript 代码中的错误,如为方法参数指定了错误的数据类型;“逻辑错误”是指程序的逻辑(数据检查和值处理)错误,如在银行业应用程序中使用错误的公式来计算利率。同样,通过事先仔细地测试应用程序,通常可以检测到并纠正这两种类型的错误。

理想情况下,您希望在将应用程序发布到最终用户之前找出并消除其中的所有错误。但是,并非所有错误都是可以预见或避免的。例如,假设您的 ActionScript 应用程序是从您无法控制的特定网站加载信息。如果该网站在某一时刻不可用,则依赖于该外部数据的应用程序部分将无法正确运行。错误处理的最重要方面包括应对这些未知情况并妥善进行处理。用户需要继续使用您的应用程序,或者至少获得一条友好的错误消息来解释应用程序为什么无法运行。

ActionScript 使用以下两种方式来表示运行时错误:

  • 错误类:很多错误都具有一个关联的错误类。当发生错误时,Flash 运行时(如 Flash Player 或 Adobe AIR)将创建与该错误关联的特定错误类的实例。代码可以使用该错误对象中包含的信息对错误进行相应的响应。

  • 错误事件:有时,当 Flash 运行时正常触发事件时,也会发生错误。在这类情况下,触发的是错误事件。每个错误事件都有一个与之关联的类,Flash 运行时会将该类的实例传递给订阅了该错误事件的方法。

要确定特定方法是否会触发错误或错误事件,请参阅用于 Adobe Flash Platform 的 ActionScript 3.0 参考中该方法的条目。

重要概念和术语

以下参考列表包含与错误处理例程编程相关的重要术语:

异步
不提供即时结果的程序命令(如方法调用),而是以事件形式提供结果(或错误)。

捕捉
当异常(一种运行时错误)发生时,代码识别了该异常,则表示该代码“捕捉”了异常。捕获异常后,Flash 运行时会停止通知其他 ActionScript 代码发生了异常。

调试器版本
Flash 运行时的特殊版本(例如 Flash Player 调试器版本或 AIR Debug Launcher (ADL)),其中包含通知用户发生运行时错误的代码。在 Flash Player 或 Adobe AIR 标准版(大多数用户使用的版本)中,将忽略 ActionScript 代码未处理的错误。在 Adobe Flash CS4 Professional 和 Adobe Flash Builder 提供的调试器版本中,当出现未处理的错误时,会出现警告消息。

异常
在应用程序运行时发生的错误,Flash 运行时无法自行解决此问题。

重新引发
当代码捕捉到异常时,Flash 运行时不再通知其他对象发生了异常。如果让其他对象收到发生异常的消息很重要,则代码必须重新引发异常才能再次启动通知进程。

同步
可提供即时结果(或立即引发错误)的程序命令(例如方法调用),这意味着此响应可以在同一代码块使用。

引发
通知 Flash 运行时(并因此通知其他对象和 ActionScript 代码)发生了错误的行为称为“引发” 错误。