2011-04-12 2 views
1

Я действительно не понимаю UncaughtErrorEvent и не могу заставить его работать на приложение Air 2.6. Если я пройду через код с отладчиком, я получаю очень странные результаты.ActionScript 3.0 UncaughtErrorEvent не работает должным образом

Это код:

public class Main extends Sprite{ 
     public function Main(){ 
      loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);   
        // ... 
      } 
      ... 
     private function onUncaughtError(e:UncaughtErrorEvent):void 
     { 
      var error:Error = e.error; 
      Logger.log("Uncaught Error - Type: " + e.type + " - Message: " + error.message, "session"); 
     } 
} 

я устанавливаю точку останова на линии var error:Error = e.error; и запустить приложение в одной точке, происходит исключение и отладчик правильно разбивает на определенной строке.

Теперь наступает странная часть.

Когда я нажимаю на «перешагнуть (F6)» Я бы ожидать, что приложение, чтобы перейти к следующей строке «Logger.log (...» - но вместо этого, консоль будет отображать исключение, сброшенная

Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found. 

и приложение идет только обратно работает. линия «Logger.log (...» это никогда не выполняется , как это возможно? Как это может быть, что отладчик остановится на var error:Error = e.error, но следующая строка не выполненный?

С благодарностью за разъяснение

ответ

2

AS3 reference читает

Когда содержание работает в версии среды выполнения отладчика , например, версия отладочного Flash Player или AIR Debug Launcher (ADL), диалоговое окно с неперехваченной ошибкой появляется, когда происходит ошибка. Для тех версий версии выполнения отображается диалоговое окно ошибки , даже если слушатель зарегистрирован для события uncatchError . Чтобы предотвратить появление диалогового окна в этой ситуации, вызовите метод UncaughtErrorEvent для объекта preventDefault().

+0

И, кстати, 'e.error' может быть либо« ошибкой », либо« ошибкой ». – Kodiak

Смежные вопросы