|
|
|||||
Обязательные try..catch как в Java
Изучаю язык Java и заметил там одну очень полезную особенность - компилятор "заставляет" обработать все исключения. Нет ли во флекс-консольном компиляторе (который к FD прикручивается) такой опции?
__________________
Не бойся, если ты один. Бойся, если ты ноль |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Нет, такой опции нет. Не позволяет система типов (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, время: 02:15. |
|
« Предыдущая тема | Следующая тема » |
|
|