Основы обработки ошибок

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Ошибка времени выполнения возникает тогда, когда в коде ActionScript происходит некорректный процесс, препятствующий предполагаемому выполнению содержимого. Для обеспечения безотказной работы кода ActionScript необходимо создавать такие приложения, которые обрабатывают ошибки, то есть анализируют и устраняют их или, по крайней мере, сообщают пользователю о том, что случилось. Этот процесс называется обработкой ошибок .

В целом обработка ошибок представляет собой многоплановую систему действий, включающую реакцию на многие виды ошибок, которые возникают как при составлении приложения, так и при его выполнении. Ошибки, возникающие во время компиляции программы, как правило, легче идентифицировать — их обязательно нужно устранить, чтобы завершить процесс создания SWF-файла.

Ошибки выполнения обнаружить сложнее, поскольку для их возникновения необходимо, чтобы ошибочный код фактически был запущен. Если сегмент программы имеет несколько ветвей кода, например инструкцию if..then..else , тогда для подтверждения отсутствия ошибок в коде необходимо проверить все возможные условия со всеми возможными реальными значениями, которые может применить будущий пользователь программы.

Ошибки выполнения можно разделить на две категории: ошибки программирования — ошибки в коде ActionScript, такие как задание неверного типа данных для параметра метода; и логические ошибки — ошибки проверки данных и ошибки управления значениями, такие как использование неверной формулы для расчета процентов в банковском приложении. Ошибки обоих этих типов часто можно обнаружить и исправить заблаговременно, если аккуратно проверить приложение.

В идеале следует найти и устранить все ошибки в создаваемом приложении, прежде чем оно поступит в распоряжение конечного пользователя. Тем не менее, не все ошибки можно предвидеть и предотвратить. Например, если приложение ActionScript загружает какую-либо информацию с веб-сайта, этот процесс выходит за пределы контроля программиста. Если какой либо ресурс веб-сайта оказывается недоступен, тогда блок программы, зависящий от внешних данных, не сможет работать корректно. Самый важный аспект обработки ошибок заключается в подготовке к таким непредвиденным случаям и соответствующей реакции на них. Конечным пользователям необходимо продолжить работу с приложением или хотя бы получить сообщение об ошибке, в котором объясняется причина сбоя.

Ошибки выполнения в ActionScript представляются двумя способами.

  • Классы ошибок: многие ошибки можно отнести к определенному классу. Когда возникает ошибка, среда выполнения Flash (например, Flash Player или Adobe AIR) создает экземпляр специального класса ошибок, который связан с данной конкретной ошибкой. Код программы может использовать информацию, содержащуюся в объекте ошибки, чтобы подготовить соответствующий ответ на эту ошибку.

  • События ошибок: иногда ошибка возникает, когда среда выполнения Flash нормально срабатывает по событию. В этих случаях отправляется событие ошибки. Каждое событие ошибки имеет свой класс. Среда выполнения Flash передает экземпляр этого класса методам, которые приписаны к событию ошибки.

Чтобы определить, может ли конкретный метод инициировать ошибку или событие ошибки, см. раздел описания методов в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform .

Важные понятия и термины

В следующем справочном списке перечислены важные термины, связанные с составлением программ для обработки ошибок.

Асинхронность
Ситуация, при которой команда программы (например, вызов метода) не приводит к непосредственному результату. Результат (или ошибка) в этом случае принимает форму события.

Перехват
Когда имеет место исключительная ситуация (ошибка выполнения) и когда код «знает» об этом, говорят, что код перехватил исключение. При перехвате исключения среда выполнения Flash прекращает уведомление другого кода ActionScript об этом исключении.

Отладочная версия
Особая версия среды выполнения Flash, например, отладочная версия Flash Player или AIR Debug Launcher (ADL), которая содержит код уведомления пользователей об ошибках времени выполнения. В стандартных версиях Flash Player и Adobe AIR (которые использует большинство пользователей) ошибки, не обрабатываемые с помощью кода ActionScript, игнорируются. В отладочных версиях (включенных в Adobe Flash CS4 Professional и Adobe Flash Builder) при обнаружении необработанной ошибки появляется предупреждающее сообщение.

Исключительная ситуация
Ошибка, возникающая во время работы приложения, которую среда выполнения Flash не может разрешить самостоятельно.

Повторная генерация
При перехвате кодом исключения среда выполнения Flash больше не уведомляет о нем другие объекты. Для извещения остальных объектов об исключении важно, чтобы код мог повторно сгенерировать исключение и тем самым возобновлять процесс уведомления.

Синхронность
Ситуация, при которой команда программы, например вызов метода, приводит к непосредственному результату или к немедленной генерации ошибки. При этом ответ может использоваться в одном и том же блоке кода.

Генерация
Акт извещения среды выполнения Flash (и, как следствие, извещение других объектов и кода ActionScript) о возникновении ошибки называется генерацией ошибки.