Каждый тип события регистрируется как отдельный String
, поэтому единственный способ перехватить все события разных типов - это прослушать неисследованных ошибок, которые передаются специальным UncaughtErrorEvents
диспетчер. Примечательно, что это существует в любом DisplayObject
loaderInfo
свойстве @ DisplayObject.loaderInfo.uncaughtErrorEvents
.
Демонстрация 3 способов получения необнаруженных ошибок ...
private var loader:Loader = new Loader();
public function MyDocumentClass ()
{
// 1: Listen for all errors in the application:
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
// 2: Listen for errors from the child swf being loaded:
loader.load(new URLRequest("file.swf"));
loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
// 3: Listen for errors from Loader doing the loading:
loader.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
// This seems like it would work, but wasn't working in tests I ran:
stage.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
}
private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
{
if (event.error is Error)
{
var error:Error = event.error as Error;
// do something with the error
}
else if (event.error is ErrorEvent)
{
var errorEvent:ErrorEvent = event.error as ErrorEvent;
// do something with the error
}
else
{
// a non-Error, non-ErrorEvent type was thrown and uncaught
}
}
Из Документация Adobe ...
Объект UncaughtErrorEvent
(extends ErrorEvent
) отправляется
экземпляр класса UncaughtErrorEvents
при необработанной ошибке
происходит. Необнаруженная ошибка возникает, когда выдается ошибка вне
любые блоки try..catch
или когда объект ErrorEvent
отправляется с
нет зарегистрированных слушателей. Функциональность необработанной ошибки
часто описывается как «глобальный обработчик ошибок».
Доступ к объекту UncaughtErrorEvents
возможен двумя способами ...
LoaderInfo.uncaughtErrorEvents
- для обнаружения необнаруженных ошибок в коде, определенном в том же SWF.
Объект, отправляющий событие uncaughtError, когда необработанный
ошибка происходит в SWF, который загружен этим объектом Loader.
необнаруженная ошибка возникает, когда выдается ошибка вне
блоки try..catch или когда объект ErrorEvent отправляется без
зарегистрированные слушатели.
Обратите внимание, что свойство uncaughtErrorEvents объекта Loader отправляет
события, которые проходят через него, а не события, которые он отправляет напрямую.
Он никогда не отправляет uncaughtErrorEvent в целевой фазе. Это только
отправляет событие на этапах захвата и образования пузырьков. Чтобы обнаружить
необнаруженная ошибка в текущем SWF (SWF, в котором находится объект Loader
определено) вместо этого используйте свойство LoaderInfo.uncaughtErrorEvents.
Loader.uncaughtErrorEvents
- для обнаружения неперехваченных ошибок в коде, определенном в SWF, загруженном объектом Loader.
Объект, отправляющий событие uncaughtError, когда необработанный
Ошибка происходит в коде в SWF-файле этого объекта LoaderInfo. Необученный
ошибка возникает, когда выдается ошибка за пределами любых блоков try..catch
или когда объект ErrorEvent отправляется без зарегистрированных
слушателей.
Это свойство создается, когда SWF-файл связан с этим LoaderInfo.
закончила загрузку. До этого момента свойство uncaughtErrorEvents
ноль. В проекте только для ActionScript вы можете получить доступ к этому свойству
во время или после выполнения функции конструктора основного
класс SWF-файла. Для проекта Flex, uncaughtErrorEvents
свойство доступно после того, как событие applicationComplete
посланные.
Некоторые важные детали из документации Adobe ...
Когда происходит событие uncaughtError, даже если событие обрабатывается,
выполнение не продолжается в стеке вызовов, вызвавшем ошибку.
Если ошибка является синхронной, любой код, оставшийся в
функция, в которой произошла ошибка, не выполняется. Следовательно, это
Скорее всего, когда происходит событие с неперехваченной ошибкой, ваше приложение
в нестабильном состоянии. Поскольку может быть много причин для необученного
ошибка, невозможно предсказать, какая функциональность доступна.
Например, ваше приложение может выполнять сеть
операции или файловые операции. Тем не менее, эти операции не
обязательно в наличии.
Когда контент выполняется в отладочной версии среды выполнения, такой как
версия отладчика Flash Player или AIR Debug Launcher (ADL),
при возникновении неперехваченной ошибки появляется диалоговое окно с неперехваченной ошибкой. За
эти версии во время выполнения, диалог ошибки появляется, даже когда слушатель
зарегистрирован для события uncaughtError. Чтобы предотвратить диалог
в этой ситуации вызвать объект UncaughtErrorEvent
Метод protectDefault ().