3

使用 URLLoader 时可能出现两种类型的错误:可以在 try {} 块中捕获的异常和可以由处理函数处理的错误事件。

发生异常/错误事件后,我应该在我的 URLLoader 对象上调用 close() 吗?

4

1 回答 1

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()多么奇怪。也就是说,我仍然不相信,所以我欢迎任何反对这一点的证据。

于 2013-07-01T07:53:15.770 回答