在 Flex 3 中无法收到有关未捕获异常的通知。Adobe 意识到了这个问题,但我不知道他们是否计划创建一个解决方法。
目前唯一的解决方案是将 try/catch 放在合乎逻辑的位置,并确保您正在侦听 ERROR(或 Web 服务的 FAULT)事件以获取任何调度它们的事件。
编辑:此外,实际上不可能捕获事件处理程序引发的错误。我在 Adobe Bug System 上记录了一个错误。
2010 年 1 月 12 日更新:Flash 10.1和AIR 2.0 (均处于测试版)现在支持全局错误处理,并且通过订阅LoaderInfo.uncaughtErrorEvents的UNCAUGHT_ERROR事件来实现。以下代码取自livedocs 上的代码示例:
public class UncaughtErrorEventExample extends Sprite
{
public function UncaughtErrorEventExample()
{
loaderInfo.uncaughtErrorEvents.addEventListener(
UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
}
private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
{
if (event.error is Error)
{
var error:Error = event.error as Error;
// do something with the error
}
else if (event.error is ErrorEvent)
{
var errorEvent:ErrorEvent = event.error as ErrorEvent;
// do something with the error
}
else
{
// a non-Error, non-ErrorEvent type was thrown and uncaught
}
}