我真的不了解UncaughtErrorEvent并且无法让它适用于我的Air 2.6应用程序。如果我使用调试器逐步执行代码,我会得到非常奇怪的结果。
这是代码:
public class Main extends Sprite{
public function Main(){
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);
// ...
}
...
private function onUncaughtError(e:UncaughtErrorEvent):void
{
var error:Error = e.error;
Logger.log("Uncaught Error - Type: " + e.type + " - Message: " + error.message, "session");
}
}
我在第var error:Error = e.error;
行设置断点并启动应用程序
在某一点上,发生异常并且调试器在特定行上正确中断。
现在是奇怪的部分。
当我点击“跳过(F6)”时,我希望应用程序跳转到下一行“Logger.log(...” - 但相反,控制台将显示抛出的异常
Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.
然后应用程序重新运行。 “Logger.log(...”行永远不会执行
这怎么可能呢?如何调试器在var error:Error = e.error
中断,但下一行没有执行?
感谢您的澄清
答案 0 :(得分:2)
当内容在调试器中运行时 运行时的版本,例如 调试版的Flash Player或 AIR Debug Launcher(ADL),一个 当一个未出现的错误对话框出现 未发生的错误发生了。对于那些 运行时版本,错误对话框 即使是听众也会出现 注册了uncaughtError 事件。阻止对话框 出现在那种情况下,打电话给 UncaughtErrorEvent对象 preventDefault()方法。