ГлавнаяActionScript 3 — «100 советов» › Перехват асинхронных ошибок

Перехват асинхронных ошибок

June 19th, 2006
Иногда ошибка может произойти намного позже того, как была вызвана функция ее спровоцировавшая. Например, загрузка внешнего контента с помощью (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

Категория: ActionScript 3 — «100 советов» Ярлыки: ,

Смотрите также

Ошибки: try..catch..finally Операторы (.) и (..) для XML
  1. Пока без комментариев.
  1. Пока нету.