прослушиватель событий для ошибок сценария действий flex / air - PullRequest
3 голосов
/ 09 декабря 2011

Я пытаюсь добавить прослушиватель событий в свое эфирное приложение, которое не позволило бы появиться окну «Ошибка ActionScript», чтобы я мог обработать ошибку в своем приложении.

Мне удалось найти небольшую информацию об этом от Adobe . Я просто не уверен, что я должен слушать.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Многое зависит от того, какая ошибка выдается и почему.

Лучше всего внимательно прочитать документацию ActionScript и добавить слушателей, чтобы реагировать на все ошибки, которые имеют явное ErrorEvents (например, IOErrorEvent и SecurityErrorEvent).Они обычно связаны с сетевым доступом и / или доступом к файлам, а также с проблемами безопасности.

Для большинства других ошибок есть операторы try {} catch() {} finally {}. Этот урок может быть хорошим местом для начала.

А если ничего не помогает, есть UncaughtErrorEvent .

Но вы действительно должны использовать его как последнее средство, а не как волшебную палочку - лучшая обработка ошибок: а) попытка предотвратить появление ошибок в первую очередь (убедитесь, что все переменные правильноинициализировать, проверить на нулевое значение и т. д.) и b) обрабатывать ожидаемые ошибки времени выполнения, явно перехватывая их, чтобы приложение работало и работало стабильно.

0 голосов
/ 09 декабря 2011

Окно не появится, если вы используете стандартную версию Flash Player.

Это проявится только как диалоговое окно в версиях отладчика плагины браузера и автономные плееры, как сообщение в выводе панель в плеере авторинга, а так же запись в файле журнала для Adobe Flex Builder 3. Он не будет проявляться вообще в релизе версии Flash Player или AIR.

Источник: здесь .

0 голосов
/ 09 декабря 2011

У вас есть пара вариантов. Как вы знаете, обработка исключений не всегда возможна для определенных асинхронных операций.

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

Например, 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).

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