【问题标题】:Error Handling in flexflex 中的错误处理
【发布时间】:2012-03-01 16:43:25
【问题描述】:
在名为 Error #2044: Unhandled IOErrorEvent: 的错误提示中加载文件。 text=Error #2124: 加载的文件是未知类型。
我需要做的是当这个错误发生时我想调用一个函数。
所以我把导致错误发生的代码块放在try catch块中。
但是当发生错误时,它不会被捕获。
下面是sn-p的代码。
try {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
loader.loadBytes(fileReferance.data);
}
catch(err:*) {
functionTocall(fileReferance);
}
如何处理..
【问题讨论】:
标签:
actionscript-3
apache-flex
【解决方案1】:
flash 中有 2 种类型的错误:同步和异步。可以使用try..catch 块处理同步错误。当代码执行失败时,会立即抛出此类错误。但是你不能确切地知道什么时候会抛出异步错误。您正在尝试处理异步错误。这就是为什么你无法以你的方式捕捉它。
您应该为IOErrorEvent 添加事件监听器。
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
...
private function onIOError(e:IOErrorEvent) {
....
}
【解决方案2】:
只需添加另一个正在侦听IOErrorEvent 的侦听器:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderErrorHandler);
loader.loadBytes(fileReferance.data);
就是这样