我正在尝试向我的空中应用程序添加一个事件监听器,以防止出现“ActionScript错误”窗口,因此我可以在应用程序中处理错误。
我找到了little information about this from adobe。我只是不确定我应该听什么。
答案 0 :(得分:2)
这主要取决于抛出的错误以及原因。
您最好的选择是仔细阅读ActionScript文档并添加侦听器以对所有具有明确 ErrorEvents 的错误做出反应(例如IOErrorEvent
和{{1 }})。这些通常与网络和/或文件访问以及安全问题有关。
对于大多数其他错误,都有SecurityErrorEvent
个语句。 This tutorial可能是一个很好的起点。
如果一切都失败了,那就是UncaughtErrorEvent。
但你真的应该使用那个作为最后的手段,而不是作为一个神奇的子弹 - 最好的错误处理是a)试图防止错误被抛出(确保所有变量都正确初始化,测试for null等)和b)通过显式捕获它们来处理预期的运行时错误,以保持应用程序的运行和稳定。
答案 1 :(得分:0)
你有几个选择。如您所知,对于某些异步操作,并不总是可以进行异常处理。
首先,您需要知道哪个对象负责导致错误的异步操作。最明智的方法是将必要的错误事件处理程序添加到此对象。
例如,URLLoader
执行异步操作;它的失败只能通过添加错误事件侦听器来处理。例如:
var loader: URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
另一个“全能”选项是优先考虑Flash Player 10.1的新UncaughtErrorEvent
功能。为此,您需要将未捕获的错误处理程序附加到主应用程序的加载程序;这将抓住一切!例如:
loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, loaderErrorHandler);
private function loaderErrorHandler(e:UncaughtErrorEvent):void {
if(event.error is Error) {
// handle error from embedded SWF
}
// suppress error dialog
e.preventDefault();
}
最后一个选项可能不是最好的方法,因为它可以促进吞噬异常,而不是正确地解决和处理问题;尽管如此,它在某些特殊情况下(嵌入SWF)会很有用。
答案 2 :(得分:0)
如果您运行的是Flash Player的标准版本,则不会显示该窗口。
它只会显示为调试器版本的对话框 浏览器插件和独立播放器,作为输出中的消息 创作播放器中的面板,以及日志文件中的条目 Adobe Flex Builder 3.它在发布中根本不会显示 Flash Player或AIR的版本。
来源:here。