使用URLLoader时可能出现两种类型的错误:可以在try {}块中捕获的异常和可由处理函数处理的错误事件。
我应该在发生异常/错误事件后在我的URLLoader对象上调用close()吗?
答案 0 :(得分:1)
有趣的问题 - 我尝试了这段代码并没有得到您期望的错误(流错误):
var urlLoader:URLLoader = new URLLoader();
urlLoader.load( new URLRequest("http://stackoverflow.com/test.jpg") );
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, error);
function error(e:IOErrorEvent):void
{
// Don't get the stream error, meaning the stream is still open.
urlLoader.close();
}
然后我想,也许它会在半秒钟之后关闭,所以我将setTimeout()
附加到了近距离通话中。仍然没有得到错误。
function error(e:IOErrorEvent):void
{
setTimeout(function()
{
// Still no error.
trace("Test.");
urlLoader.close();
}, 3000);
}
要仔细检查,我运行此操作以确保我们仍然遇到错误:
var urlLoader:URLLoader = new URLLoader();
urlLoader.close(); // Error: Error #2029: This URLStream object does not have
// a stream opened.
因此,如果出现错误,似乎就好像你确实需要.close()
一个流。有多奇怪也就是说,我仍然难以置信,所以我欢迎任何反对此的证据。