Ошибка времени выполнения возникает тогда, когда в коде 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) о возникновении ошибки называется
генерацией
ошибки.