Иногда ошибка может произойти намного позже того, как была вызвана функция ее спровоцировавшая. Например, загрузка внешнего контента с помощью (
flash.net.URLLoader). После вызова URLLoader.load с неправильным URL, плеер продолжит выполнение дальнейшего кода, а непосредственно процесс загрузки начнется позже, и только тогда возникнет ошибка. В таких случаях использование блока try..catch..finally не поможет, т.к. в самом коде в момент выполнения ошибки нет.
Пример:
Код:
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("Invalid XML URL"));
trace("Continuing with script...");
Результат выполнения:
Код:
Continuing with script...
Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: file:///C|/DOCUME%7E1/senocular/LOCALS%7E1/Temp/Invalid XML URL
at Timeline0_5650dafd68b564789d938267b772078/::frame1()
Ошибка возникла после выполнения trace("Continuing with script...").
В подобных случаях можно просто использовать обработчики событий.
Код:
var loader:URLLoader = new URLLoader();
loader.addEventListener(IOErrorEvent.IO_ERROR, catchIOError);
function catchIOError(event:IOErrorEvent){
trace("Error caught: "+event.type);
}
loader.load(new URLRequest("Invalid XML URL"));
trace("Continuing with script...");
Результат:
Код:
Continuing with script...
Error caught: ioError