Сравнение классов ошибок

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

ActionScript содержит определенное количество предопределенных классов Error. Однако вы тоже можете использовать такие же классы Error в своем коде. В ActionScript 3.0 есть два основных типа классов ошибок: базовые классы Error и пакет классов flash.error. Пакет flash.error содержит дополнительные классы, которые облегчают процесс разработки и отладки приложений ActionScript 3.0.

Базовые классы Error

Базовые классы Error включают в себя: Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError и VerifyError. Все эти классы расположены на верхних уровнях пространства имен.

Имя класса

Описание

Примечания

Error

Класс Error используется для генерации исключений. Он является базовым классом для других классов исключений, определенных в ECMAScript: EvalError, RangeError, ReferenceError, SyntaxError, TypeError и URIError.

Класс Error является базовым для всех ошибок выполнения. Его рекомендуется использовать в качестве основы для пользовательских классов ошибок.

ArgumentError

Класс ArgumentError представляет ошибку, которая возникает, если значения параметров, переданные при вызове функции, не совпадают с параметрами, определенными для этой функции.

Ниже приведены примеры ошибок аргумента.

  • Слишком мало или слишком много аргументов передается методу.

  • Ожидается, что аргумент будет принадлежать к перечислимому типу, но он не оказывается таковым.

EvalError

Исключение EvalError генерируется, если какие-либо параметры передаются конструктору функции класса, а также если код пользователя вызывает функцию eval() .

В ActionScript 3.0 отсутствует поддержка функции eval() , поэтому попытка ее использования приводит к генерации ошибки.

В более ранних версиях Flash Player функция eval() использовалась для доступа с помощью имени к переменным, свойствам, объектам или фрагментам роликов.

RangeError

Исключение RangeError генерируется, если числовое значение выходит за пределы допустимого диапазона.

Например, RangeError генерируется классом Timer, если задержка имеет отрицательное или бесконечное значение. RangeError генерируется также при попытке добавить экранный объект с недопустимой глубиной.

ReferenceError

Исключение ReferenceError генерируется при попытке выполнить ссылку на неопределенное свойство для защищенного (нединамического) объекта. Версии компилятора до ActionScript 3.0 не генерировали ошибку при попытке доступа к свойству undefined . Однако в такой ситуации ActionScript 3.0 выдает исключение ReferenceError.

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

SecurityError

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

Ниже приведены примеры ошибок безопасности.

  • Несанкционированный доступ к свойству или вызов метода, выполненные из-за границы изолированной программной среды.

  • Предпринята попытка доступа к URL, не разрешенному изолированной программной средой.

  • Предпринята попытка подключения к сокету, но у данного порта не было необходимого файла политики.

  • Предпринята попытка доступа к камере или микрофону пользователя, и он запретил доступ к устройству.

SyntaxError

Исключение SyntaxError генерируется, если в коде ActionScript имеет место ошибка синтаксического разбора.

Исключение SyntaxError генерируется при нижеследующих обстоятельствах.

  • ActionScript генерирует исключение SyntaxError, когда класс RegExp пытается проанализировать недопустимое регулярное выражение.

  • ActionScript генерирует исключение SyntaxError, когда класс XMLDocument пытается проанализировать недопустимый объект XML.

TypeError

Исключение TypeError генерируется, если фактический тип операнда отличается от ожидаемого типа.

Исключение TypeError генерируется при следующих обстоятельствах:

  • Фактический параметр функции или метода не удается принудительно привязать к типу формального параметра.

  • Переменной присваивается значение, которое нельзя принудительно привязать к типу переменной.

  • Правая сторона оператора is или instanceof не принадлежит действительному типу.

  • Ключевое слово super используется неправомерно.

  • При поиске свойства найдено более одной привязки, и из-за этого результаты противоречивы.

  • Метод вызван для несовместимого объекта. Например, исключение TypeError генерируется, если метод класса RegExp «прививается» на родовой объект, а затем вызывается.

URIError

Исключение URIError генерируется, если способ использования одной из глобальных функций обработки URI несовместим с ее определением.

Исключение URIError генерируется при следующих обстоятельствах:

Недействительный URI указан для функции программного интерфейса (API) проигрывателя Flash Player, которая ожидает URI типа Socket.connect() .

VerifyError

Исключение VerifyError генерируется, если обнаружен некорректный или поврежденный SWF-файл.

Когда один SWF-файл загружает другой SWF-файл, родительский файл может перехватить исключение VerifyError, генерируемое загруженным файлом.

Пакет классов ошибок flash.error

Пакет flash.error содержит классы Error, которые считаются частью интерфейса среды выполнения Flash. В отличие от вышеописанных классов пакет flash.error связан с теми событиями ошибок, которые характерны для сред выполнения Flash (например, Flash Player или Adobe AIR).

Имя класса

Описание

Примечания

EOFError

Исключение EOFError генерируется при попытке чтения за пределом доступных данных.

Например, ошибка EOFError генерируется, когда вызывается один из методов чтения в интерфейсе IDataInput, а данных недостаточно для удовлетворения запроса на чтение.

IllegalOperationError

Исключение IllegalOperationError генерируется, если метод не реализован или реализация не рассчитана на текущее применение.

Ниже приведены примеры ошибок для запрещенных операций.

  • Базовый класс, такой как DisplayObjectContainer, обеспечивает больше функций, чем рабочая область в состоянии поддерживать. Например, при попытке получить или задать маску в рабочей области (используя stage.mask ) среда выполнения Flash генерирует ошибку IllegalOperationError вместе с сообщением: The Stage class does not implement this property or method (Рабочая область не поддерживает это свойство или метод).

  • Подкласс наследует метод, который ему не требуется и который он может не поддерживать.

  • Определенные методы специальных возможностей вызываются, когда компиляция проигрывателя Flash Player не поддерживает специальные возможности.

  • Специальные функции разработки вызываются в обычной версии проигрывателя Flash Player (с неполным набором функций).

  • Пользователь пытается задать имя объекта, находящегося на временной шкале.

IOError

Исключение IOError генерируется при некоторых ошибках ввода-вывода.

Например, эта ошибка возникает при попытке чтения/записи на сокете, который не был подключен или был отключен.

MemoryError

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

По умолчанию виртуальная машина ActionScript Virtual Machine 2 не накладывает ограничений на выделение памяти программой ActionScript. На персональных компьютерах отказы при выделении памяти происходят редко. Ошибка генерируется, когда система не может выделить достаточно памяти для выполнения операции. Следовательно, на персональных компьютерах это исключение возникает редко, если только не требуется чрезмерный объем памяти. Например, запрос на 3 ГБ выполнить невозможно, поскольку 32-разрядная программа Microsoft ® Windows® может получить доступ только к 2 ГБ адресного пространства.

ScriptTimeoutError

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

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

StackOverflowError

Исключение StackOverflowError генерируется, если стек, доступный для сценария, полностью использован.

Исключение StackOverflowError может указывать на возникновение бесконечной рекурсии.