为什么有两种不同的包装:flash.errors.IOError和flash.events.ioerrevent
我试图“故意”抛出一个错误,试图访问错误的URL,如下所示:为什么有两种不同的包装:flash.errors.IOError和flash.events.ioerrevent,flash,actionscript-3,Flash,Actionscript 3,我试图“故意”抛出一个错误,试图访问错误的URL,如下所示: try { var myData:URLRequest = new URLRequest("http://www.abc.com/"); myData.method = URLRequestMethod.POST; var vars:URLVariables = new URLVariables(); var loader:URLLoader = new URLLoader(); loader.load(my
try
{
var myData:URLRequest = new URLRequest("http://www.abc.com/");
myData.method = URLRequestMethod.POST;
var vars:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
loader.load(myData);
}
catch(e:Error)
{
trace("Yess!, caught it!");
}
以上代码,无法捕获任何错误
后来我发现,有两个包如下:
try
{
var myData:URLRequest = new URLRequest("http://www.abc.com/");
myData.method = URLRequestMethod.POST;
var vars:URLVariables = new URLVariables();
var loader:URLLoader = new URLLoader();
loader.load(myData);
}
catch(e:Error)
{
trace("Yess!, caught it!");
}
flash.errors.IOError
flash.events.IOErrorEvent
所以我发现它应该有一个addEventListener,如下所示:
loader.addEventListener(IOErrorEvent.IO_ERROR,ErrorOccurd)
但这让我想知道,为什么我要听一个事件来判断错误。为什么我不能利用“捉迷藏”呢。为什么有两种错误处理方式,一种是通过尝试,另一种是通过侦听事件来捕获?
谢谢
V.您不能在URLLoader加载方法上使用try-catch,因为加载方法是异步工作的;在下载完成之前,代码执行不会暂停。这是Flash Player引擎的典型工作方式。可能失败的异步方法将调度错误事件,而可能失败的同步方法将抛出异常。您不能在URLLoader load方法上使用try catch,因为load方法是异步工作的;在下载完成之前,代码执行不会暂停。这是Flash Player引擎的典型工作方式。可能失败的异步方法将调度错误事件,而可能失败的同步方法将抛出异常