Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обязательные try..catch как в Java (http://www.flasher.ru/forum/showthread.php?t=182132)

Jarproger 13.07.2012 00:21

Обязательные try..catch как в Java
 
Изучаю язык Java и заметил там одну очень полезную особенность - компилятор "заставляет" обработать все исключения. Нет ли во флекс-консольном компиляторе (который к FD прикручивается) такой опции?

maxkar 13.07.2012 02:00

Нет, такой опции нет. Не позволяет система типов (Function даже типа аргументов и возвращаемого значения не имеет, не то, что исключений (кстати, исключения - частный тип возвращаемого значения)). Ну и формат swc/swf, соответственно, не поддерживает указание исключений, которые необходимы компилятору.

Кроме того, для AS3 подобная проверка поможет слабо. Если вы внимательно посмотрите, 80% всех исключений в java образуются в результате синхронного ввода/вывода (где-то на низком уровне). Во flash ввод/вывод асинхронный и эти исключения возникают совсем не там, где нужно. Парсинг и прочая обработка превентивно закрывается try/catch в обертках сетевого обмена, работы с shared object. Все равно там может что-нибудь "unchecked" прилететь.

Еще часть checked exception - многопоточность и различное "окружение/конфигурация" (это семейство NoSuchAlgorithmException для криптографифи и прочие с аналогичным смыслом). Этого во flash просто нет.

Есть какое-то совсем небольшое количество checked exception, которые не попадают в указанные категории, они очень локальны в применении, так что их можно обработать/проверить и вручную.

Остался класс "внутренних ошибок", который традиционно в java выражается через unchecked exception. А они ничем не отличаются от исключений в AS3.

Ну и из опыта скажу (я документирую все выбрасываемые исключения через @throws в ASDoc). В AS3 нет места аналогам checked exceptions, есть только внутренние ошибки. Те немногие места, где исключения стоит обрабатывать (пара исключений у лоадера, например) у меня отлавливаются в сетевом уровне и идут в callback ошибок, туда же, куда идут и асинхронные ошибки. Также отлавливаются ошибки парсинга (там же, на сетевом уровне) и тоже через тот же callback уведомляются. В основном же коде любое исключение - это какая-то ошибка логики приложения.


Часовой пояс GMT +4, время: 07:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.