![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2010
Адрес: Ногинск
Сообщений: 56
|
Допустим, произошло нехорошее событие, и было выброшено исключение, которое нигде не ожидает блок try - catch. При этом приложение просто упадет без вести, а хотелось бы вывести внятное сообщение об ошибке.
В языках, где выполнение идет синхронно, как правило, есть возможность обработать такое исключение. Хотя бы если обернуть в try - catch содержимое функции main. Или, как в PHP - с помощью регистрации обработчика непойманных исключений с помощью функции set_exception_handler. В AS3, с его асинхронным выполнением, первый метод точно не пройдет. Я искал что-то, подобное второму, но нашел лишь способ, который не сработал: loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, handleGlobalErrors); Есть ли возможность сделать рабочий пример? Последний раз редактировалось Mirror13; 06.04.2012 в 02:42. |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 127
|
Нужно писать так, чтобы нехороших событий не происходило. Случались только одно из тех, которое предопределено заранее.
Найдите подозрительные участки кода, вставьте проверки И так далее. А подозрительные блоки, заключите в try ... catch |
|
|||||
package { import flash.events.Event; import flash.events.UncaughtErrorEvent; import flash.utils.setTimeout; public class Test extends Sprite { public function Test() { super(); addEventListener(Event.ADDED_TO_STAGE, onAdded); } private function onAdded(e:Event):void { loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onError); setTimeout(onTime, 2000); } private function onTime():void { var v:Sprite; addChild(v); } private function onError(e:Event):void { e.preventDefault(); trace(e); } } }
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: May 2010
Адрес: Ногинск
Сообщений: 56
|
Цитата:
Ясное дело, что нужно делать все идеально - чтобы сразу без ошибок, и весь код можно было включать в книжку "Чистый код". Но жизнь - тяжелая штука... |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|