URLLoader在没有Internet连接时抛出Uncatcheable ioError

时间:2014-03-20 04:54:08

标签: actionscript-3 flash urlloader

使用没有互联网连接的URLLoader时,Flash会抛出无法捕获的异常:

Error #2044: Unhandled ioError:. text=Error #2032: Stream Error

由于我正在开发手机应用程序,因此互联网总是有机会掉线。我想检测这个并显示错误对话框。反正有没有抓住并压制这个错误?代码如下:

try
{
var request:URLRequest = new URLRequest(API_URL + "/" + API_VERSION + "/" + gameKey + "/" + type);

request.data = jsonString;
request.method = URLRequestMethod.POST;
request.requestHeaders.push(new URLRequestHeader("Authorization", MD5.hash(jsonString + secretKey)));

var loader:URLLoader = new URLLoader();
loader.data = type;
loader.addEventListener(Event.COMPLETE, onRequestComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onRequestError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onRequestSecurityError);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onRequestStatus);

loader.load(request);
} catch (Error) { trace("URLLoader Failed");}

异常堆栈声称它是在分配URLLoader的行上引发的,但是当调试执行超过该行时,异常来自未知的地方。永远不会调用catch块。命中错误事件处理程序,但仅在异常显示为Flash Player未处理之后。

任何帮助将不胜感激。我把头发撕掉了,无法在网上找到答案(其他人报告了同样的问题,但没有解决方案。)

1 个答案:

答案 0 :(得分:1)

  

使用没有互联网连接的URLLoader时,Flash会抛出无法捕获的异常

要抓住它们,请与uncaughtErrorEvents中的LoaderInfo一起使用。例如,您可以订阅未捕获的错误并使用一些回退逻辑来管理它们:

//Somewhere, you could manage it globally, or declare before risky part
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);


private function onUncaughtError(e:UncaughtErrorEvent):void {
    e.preventDefault();
    trace("Scorpion: come here! - " + e.toString());
}