Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий
Поскольку многие приложения могут работать без создания логики обработки ошибок, некоторые разработчики не спешат встраивать средства обработки ошибок в свои программы. Тем не менее, без обработки ошибок приложение легко может «зависнуть» или разочаровать пользователя, если не будет работать так, как ожидалось. ActionScript 2.0 имеет класс Error, позволяющий встроить логику в пользовательские функции для генерации исключения со специальным сообщением. Поскольку обработка ошибок является критическим условием для создания удобного для пользователя приложения, ActionScript 3.0 включает в себя расширенную архитектуру перехвата ошибок.
Примечание.
Хотя в
справочнике ActionScript® 3.0 для платформы ® Flash® Platform
перечислены исключения, выдаваемые многими методами, этот список может включать не все возможные исключения для каждого из них. Метод может генерировать исключения, связанные с ошибками синтаксиса или с другими проблемами, которые не указаны явно в описании метода, даже если в этом описании приводится список исключений, отправляемых методом.
Элементы обработки ошибок в ActionScript 3.0
В ActionScript 3.0 используются многочисленные инструменты обработки ошибок, перечисленные ниже.
-
Классы Error. ActionScript 3.0 включает большой набор классов Error, которые расширяют спектр ситуаций, создающих объекты ошибок. Каждый класс Error помогает приложению обрабатывать специфические состояния ошибки. Эти состояния могут относится к ошибкам системы (например, состояние MemoryError), к ошибкам кода (например, состояние ArgumentError), к ошибкам сети и коммуникации (например, состояние URIError) или к другим ошибкам. Для получения дополнительной информации по каждому классу см. раздел
Сравнение классов ошибок
.
-
Уменьшение количества скрытых сбоев. В ранних версиях Flash Player ошибки генерировались и сообщались только в том случае, когда явно использовалась инструкция
throw
. В Flash Player 9 и в более поздних версиях среды выполнения Flash собственные методы и свойства ActionScript выдают ошибки времени выполнения. Эти ошибки позволяют более эффективно обрабатывать исключения по мере возникновения, а затем отвечать на каждое из них по отдельности.
-
В процессе отладки появляются точные сообщения об ошибках. В отладочных версиях среды выполнения Flash проблемные коды и ситуации генерируют обстоятельные сообщения об ошибках, которые дают возможность легко определить причины сбоя в конкретном блоке кода. Эти сообщения позволяют более эффективно исправлять ошибки. Дополнительные сведения см. в разделе «
Работа с отладочными версиями сред выполнения Flash
».
-
Четкое определение ошибок позволяет передавать пользователям точные сообщения об ошибках. В ранних версиях Flash Player метод
FileReference.upload()
возвращал логическое значение
false
, если вызов метода
upload()
был неуспешным, указывая при этом одну из пяти возможных ошибок. Если ошибка происходит при вызове метода
upload()
в ActionScript 3.0, предусмотрено четыре специфические ошибки, которые позволяют отображать более точные сообщения об ошибках для конечного пользователя.
-
Точная обработка ошибок. Для многих стандартных ситуаций генерируются четко определенные ошибки. Например, в ActionScript 2.0 перед заполнением объекта FileReference свойство
name
имеет значение
null
(таким образом, перед использованием или отображением свойства
name
необходимо удостовериться, что это значение не установлено как
null
). В ActionScript 3.0 при попытке доступа к свойству
name
перед тем, как оно было заполнено, Flash Player или AIR генерирует сообщение IllegalOperationError, которое информирует о том, что значение не было задано, так что для обработки ошибки можно использовать блоки
try..catch..finally
. Дополнительные сведения см. в разделе
Использование инструкций try..catch..finally
.
-
Отсутствие существенного снижения производительности. Использование для обработки ошибок блоков
try..catch..finally
требует значительно меньше дополнительных ресурсов по сравнению с предыдущими версиями ActionScript.
-
Класс ErrorEvent позволяет создавать прослушивателей для специфических событий асинхронных ошибок. Для получения подробной информации см. раздел
Ответы на события ошибок и ошибки состояния
.
Стратегия обработки ошибок
Если приложение не сталкивается с проблемными ситуациями, оно может успешно работать даже без встроенной в его код логики обработки ошибок. Тем не менее, при возникновении сбоев в приложении, которое не имеет активной системы обработки ошибок, конечные пользователи никогда не узнают причины этих сбоев.
Существует несколько подходов к вопросу обработки ошибок в приложении. Ниже перечислены три основных способа обработки ошибок.
-
Использование инструкций
try..catch..finally
. Они позволяют перехватывать синхронные ошибки при их возникновении. Инструкции можно расположить в иерархическом порядке, чтобы перехватывать исключения на различных уровнях выполнения кода. Дополнительные сведения см. в разделе
Использование инструкций try..catch..finally
.
-
Создание пользовательских объектов ошибок. Для контроля специфических операций приложения, не предусмотренных встроенными типами ошибок, можно использовать класс Error с целью создания собственных объектов ошибок. После этого можно будет использовать инструкции
try..catch..finally
совместно с созданными объектами ошибок. Для получения дополнительной информации см. раздел
Создание пользовательских классов ошибок
.
-
Создание прослушивателей событий и обработчиков для ответа на события ошибок. Используя эту стратегию, можно создавать глобальные обработчики ошибок, которые позволяют обрабатывать подобные события без дублирования кода в блоках
try..catch..finally
. С помощью этого метода можно также с большой долей вероятности перехватывать асинхронные ошибки. Для получения подробной информации см. раздел
Ответы на события ошибок и ошибки состояния
.
|
|
|