У вас есть пара вариантов. Как вы знаете, обработка исключений не всегда возможна для определенных асинхронных операций.
Прежде всего, вам нужно знать, какой объект отвечает за асинхронную операцию, которая вызывает ошибку. Наиболее разумный подход заключается в добавлении необходимых обработчиков событий ошибок к этому объекту.
Например, URLLoader
выполняет асинхронные операции; и его ошибка может быть обработана только путем добавления прослушивателей ошибок. Например:
var loader: URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
Еще одним «универсальным» вариантом является использование новой функции UncaughtErrorEvent
в Flash Player 10.1. Чтобы это работало, вам нужно подключить обработчик необработанных ошибок к загрузчику основного приложения; это поймает все! Например:
loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, loaderErrorHandler);
private function loaderErrorHandler(e:UncaughtErrorEvent):void {
if(event.error is Error) {
// handle error from embedded SWF
}
// suppress error dialog
e.preventDefault();
}
Последний вариант может быть не лучшим подходом, поскольку он способствует проглатыванию исключений вместо правильного решения проблемы; тем не менее он может быть полезен при определенных уникальных обстоятельствах (встраивание SWF).