Почему две разные упаковки flash.errors.IOError vs flash.events.IOErrorEvent - PullRequest
0 голосов
/ 05 декабря 2011

Я пытался «преднамеренно» выдать ошибку, пытаясь получить доступ к неправильному 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(myData); 
}
catch(e:Error)
{
   trace("Yess!, caught it!");
}

Приведенный выше код не может поймать любую ошибку!

Позже я обнаружил, что есть два пакета:

flash.errors.IOError;

flash.events.IOErrorEvent;

поэтому я понял, что он должен иметь addEventListener следующим образом: loader.addEventListener (IOErrorEvent.IO_ERROR, errorOccured);

Но это заставило меня задуматься, почему я должен слушать событие на предмет ошибки. Почему я не могу просто попробовать и поймать. Почему два способа обработки ошибок, один - попытаться поймать другого, прослушивая событие? .

Спасибо V.

1 Ответ

3 голосов
/ 05 декабря 2011

Вы не можете использовать try-catch для метода загрузки URLLoader, потому что метод загрузки работает асинхронно;Выполнение кода не приостанавливается до завершения загрузки.Обычно так работает движок Flash Player.Асинхронные методы, которые могут потерпеть неудачу, будут отправлять события ошибок, в то время как синхронные методы, которые могут потерпеть неудачу, будут генерировать исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...