flash.errorsScriptTimeoutError Исключение ScriptTimeoutError возникает по истечении тайм-аута сценария.Error Исключение ScriptTimeoutError возникает по истечении тайм-аута сценария. Интервал тайм-аута сценария составляет 15 секунд. К тегу mx:Application можно добавить два XML-атрибута: scriptTimeLimit (количество секунд до тайм-аута сценария) и scriptRecursionLimit (допустимое количество рекурсивных вызовов).

Выдается два исключения ScriptTimeoutError. Первое исключение можно перехватить и выйти без ошибки. Если нет обработчика исключений, неперехваченное исключение приводит к завершению работы. Если выдается второе исключение, его нельзя перехватить кодом пользователя; оно передается обработчику неперехваченных исключений. Оно сделано неперехватываемым, чтобы предотвратить зависание проигрывателя на неопределенный срок.

В следующем примере используется образец класса ScriptTimeoutErrorExample, чтобы продемонстрировать ошибку, выдаваемую в случае тайм-аута сценария. Это можно сделать, выполнив следующие действия:
  1. Объявляется логическое свойство keepLooking.
  2. Конструктор вызывает метод lockMachine() в сегменте кода обработки ошибок, перехватывающего объекты ScriptTimeoutError.
  3. Метод lockMachine() содержит бесконечный цикл while.
  4. Через некоторое время выдается ScriptTimeoutError. Конструктор перехватывает это исключение, выдает сообщение об ошибке посредством оператора trace и сбрасывает логическое свойство keepLooking до значения false, прерывающего цикл while в lockMachine().
package { import flash.display.Sprite; import flash.errors.ScriptTimeoutError; public class ScriptTimeoutErrorExample extends Sprite { private var keepLooping:Boolean = true; public function ScriptTimeoutErrorExample() { try { lockMachine(); } catch(e:ScriptTimeoutError) { trace(e); // ScriptTimeoutError: Error #1502: A script has executed for longer than 15 seconds keepLooping = false; } } private function lockMachine():void { while(keepLooping){ } } } }
ScriptTimeoutError Создает новый объект ScriptTimeoutError.messageStringСтрока, связанная с объектом ошибки. Создает новый объект ScriptTimeoutError.
SQLError Экземпляр SQLError предоставляет подробную информацию о невыполненной операции.Error Экземпляр SQLError предоставляет подробную информацию о невыполненной операции.

Когда эта ошибка возникает при выполнении операции базы данных SQL в асинхронном режиме, экземпляр SQLConnection или SQLStatement отправляет объект SQLErrorEvent. Информацию об ошибке в виде экземпляра SQLError можно получить через свойство error объекта SQLErrorEvent.

Когда ошибка возникает при выполнении операции базы данных SQL в синхронном режиме, объект SQLConnection или SQLStatement выдает исключение SQLError, которое можно обработать путем включения кода, вызывающего ошибку в блок try..catch.

Этот класс передает свойства, содержащие сведения об ошибках (указывая конкретный тип возникшей ошибки), текстовое сообщение со сведениями об ошибке и операцию, вызывавшую ее появление.

flash.events.SQLErrorEventflash.data.SQLConnectionflash.data.SQLStatementSQLError Создает экземпляр SQLError, который может выдаваться самостоятельно или использоваться вместе со свойством error экземпляра SQLErrorEvent.operationStringУказывает конкретную операцию, вызывавшую сбой. Значение представляет собой одну из констант, определенную в классе SQLErrorOperation. detailsStringСведения о текущей ошибке. messageStringОписание возникшей ошибки. idint0Ссылочный номер, связанный с конкретным сообщением об ошибке. detailIDint-1Ссылочный номер, связанный с подробным сообщением об ошибке. detailArgsArraynullУпорядоченный массив подстановочных значений, который используется для создания подробных сообщений об ошибках, предназначенных для конкретной локали. Создает экземпляр SQLError, который может выдаваться самостоятельно или использоваться вместе со свойством error экземпляра SQLErrorEvent. flash.errors.SQLErrorOperationtoString Возвращает строку Error по умолчанию или значение, содержащееся в свойстве Error.message, если оно определено.Сообщение об ошибке. String Возвращает строку Error по умолчанию или значение, содержащееся в свойстве Error.message, если оно определено. detailArguments Массив строковых значений, который используется для создания подробных сообщений об ошибках, предназначенных для конкретной локали.Array Массив строковых значений, который используется для создания подробных сообщений об ошибках, предназначенных для конкретной локали.

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

there is already another table or index with this name: 'my_table'

В таком случае свойство экземпляра SQLError detailArguments будет содержать единственный элемент со значением my_table.

С помощью свойства detailID приложение может идентифицировать конкретное сообщение об ошибке details. Приложение может использовать альтернативный текст для конечного пользователя в соответствии с локалью этого пользователя. Можно заменить значения соответствующих аргументов массива detailArguments в строке сообщения об ошибке. Эту возможность целесообразно использовать в приложениях, которые отображают сообщения об ошибках свойства details напрямую конечному пользователю, находящемуся в конкретной локали.

Список значений detailID и соответствующие подробные сообщения об ошибках на английском языке, а также аргументы, см. в разделе «Сообщения с описанием ошибок, идентификаторов и аргументов SQL».

detailID Ссылочный номер, связанный с конкретным сообщением об ошибке.int Ссылочный номер, связанный с конкретным сообщением об ошибке. Данное значение используется для поддержки передачи сообщений об ошибках свойства details с учетом конкретных локалей.

Данное свойство присваивает уникальный идентификатор каждому сообщению details. (Для любого типа ошибки со своим идентификатором errorID существует несколько ошибок с уникальными значениями detailID.) С помощью такого идентификатора совместно с одним или несколькими значениями массива detailArguments приложение может выдавать подробные сообщения об ошибках с учетом локали. Эту возможность целесообразно использовать в приложениях, которые отображают сообщения об ошибках свойства details напрямую конечному пользователю, находящемуся в конкретной локали.

Список значений detailID и соответствующие подробные сообщения об ошибках на английском языке, а также аргументы, см. в разделе «Сообщения с описанием ошибок, идентификаторов и аргументов SQL».

details Сведения о текущей ошибке.String Сведения о текущей ошибке. Предоставляет дополнительную специфическую информацию о возникшей ошибке. operation Значение, указывающее операцию, которая была предпринята, когда появилась ошибка.String Значение, указывающее операцию, которая была предпринята, когда появилась ошибка. Это значение представляет собой одну из констант, определенную в классе SQLErrorOperation. flash.errors.SQLErrorOperation
SQLErrorOperation Этот класс содержит константы, представляющие возможные значения для свойства SQLError.operation.Object Этот класс содержит константы, представляющие возможные значения для свойства SQLError.operation. Эти значения указывают операцию, вызвавшую появление ошибки.

Каждое значение представляет одну из операций класса SQLConnection или SQLStatement.

flash.errors.SQLError.operationflash.data.SQLConnectionflash.data.SQLStatementANALYZE Указывает на то, что был вызван метод SQLConnection.analyze().analyzeString Указывает на то, что был вызван метод SQLConnection.analyze(). flash.data.SQLConnection.analyze()ATTACH Указывает на то, что был вызван метод SQLConnection.attach().attachString Указывает на то, что был вызван метод SQLConnection.attach(). flash.data.SQLConnection.attach()BEGIN Указывает на то, что был вызван метод SQLConnection.begin().beginString Указывает на то, что был вызван метод SQLConnection.begin(). flash.data.SQLConnection.begin()CLOSE Указывает на то, что был вызван метод SQLConnection.close().closeString Указывает на то, что был вызван метод SQLConnection.close(). flash.data.SQLConnection.close()COMMIT Указывает на то, что был вызван метод SQLConnection.commit().commitString Указывает на то, что был вызван метод SQLConnection.commit(). flash.data.SQLConnection.commit()COMPACT Указывает на то, что был вызван метод SQLConnection.compact().compactString Указывает на то, что был вызван метод SQLConnection.compact(). flash.data.SQLConnection.compact()DEANALYZE Указывает на то, что был вызван метод SQLConnection.deanalyze().deanalyzeString Указывает на то, что был вызван метод SQLConnection.deanalyze(). flash.data.SQLConnection.deanalyze()DETACH Указывает на то, что был вызван метод SQLConnection.detach().detachString Указывает на то, что был вызван метод SQLConnection.detach(). flash.data.SQLConnection.detach()EXECUTE Указывает на то, что был вызван метод SQLStatement.execute() или SQLStatement.next().executeString Указывает на то, что был вызван метод SQLStatement.execute() или SQLStatement.next(). flash.data.SQLStatement.execute()OPEN Указывает на то, что был вызван метод SQLConnection.open() или SQLConnection.openAsync().openString Указывает на то, что был вызван метод SQLConnection.open() или SQLConnection.openAsync(). flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()REENCRYPT Указывает на то, что был вызван метод SQLConnection.reencrypt().reencryptString Указывает на то, что был вызван метод SQLConnection.reencrypt(). flash.data.SQLConnection.reencrypt()RELEASE_SAVEPOINT Указывает на то, что был вызван метод SQLConnection.releaseSavepoint().releaseSavepointString Указывает на то, что был вызван метод SQLConnection.releaseSavepoint(). flash.data.SQLConnection.releaseSavepoint()ROLLBACK_TO_SAVEPOINT Указывает на то, что был вызван метод SQLConnection.rollbackToSavepoint().rollbackToSavepointString Указывает на то, что был вызван метод SQLConnection.rollbackToSavepoint(). flash.data.SQLConnection.rollbackToSavepoint()ROLLBACK Указывает на то, что был вызван метод SQLConnection.rollback().rollbackString Указывает на то, что был вызван метод SQLConnection.rollback(). flash.data.SQLConnection.rollback()SCHEMA Указывает на то, что был вызван метод SQLConnection.loadSchema().schemaString Указывает на то, что был вызван метод SQLConnection.loadSchema(). flash.data.SQLConnection.loadSchema()SET_SAVEPOINT Указывает на то, что был вызван метод SQLConnection.setSavepoint().setSavepointString Указывает на то, что был вызван метод SQLConnection.setSavepoint(). flash.data.SQLConnection.setSavepoint()
MemoryError Исключение MemoryError выбрасывается при ошибке выполнения запроса на выделение памяти.Error Исключение MemoryError выбрасывается при ошибке выполнения запроса на выделение памяти.

На персональном компьютере сбои выделения памяти бывают редко, за исключением тех случаев, когда запрос на выделения чрезвычайно большой. Например, 32-разрядная программа Windows может получить только 2 ГБ выделенного пространства, поэтому запрос на 10 миллиардов байтов будет невозможным.

По умолчанию проигрыватель Flash Player не накладывает ограничений на выделение памяти программой ActionScript.

В следующем примере показывается один из методов генерации исключения MemoryError. package { import flash.display.Sprite; import flash.errors.MemoryError; import flash.utils.setInterval; public class MemoryErrorExample extends Sprite { private var crashingStr:String; private var intervalId:Number; public function MemoryErrorExample() { crashingStr = "abcdefghijklmnopqrstuvwxyz"; intervalId = setInterval(exhaustMemory, 50); } public function exhaustMemory():void { try { crashingStr += crashingStr; } catch(e:MemoryError) { trace(e); } } } }
MemoryError Создает новый объект MemoryError.messageStringСтрока, связанная с объектом ошибки. Создает новый объект MemoryError.
StackOverflowError ActionScript выдает исключение StackOverflowError при исчерпании стека, доступного для сценария.Error ActionScript выдает исключение StackOverflowError при исчерпании стека, доступного для сценария. ActionScript использует стек для хранения информации о каждом вызове метода в сценарии, например о локальных переменных, используемых методом. Доступный объем пространства в стеке варьируется в зависимости от системы.

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

В следующем примере используется образец класса StackOverflowErrorExample, чтобы продемонстрировать ошибку, выдаваемую в случае переполнения стека. Это можно сделать, выполнив следующие действия:
  1. Конструктор вызывает метод lockMachine() в сегменте кода обработки ошибок, перехватывающего объекты StackOverflowError.
  2. Метод lockMachine() вызывает себя, пока не переполнится стек.
  3. После выдачи исключения StackOverflowError конструктор регистрирует его, а затем выдает сообщение об ошибке с помощью инструкции trace().
package { import flash.display.Sprite; import flash.errors.StackOverflowError; public class StackOverflowErrorExample extends Sprite { public function StackOverflowErrorExample() { try { lockMachine(); } catch(e:StackOverflowError) { trace(e); // StackOverflowError: Error #1023: Stack overflow. } } private function lockMachine():void { lockMachine(); } } }
StackOverflowError Создает новый объект StackOverflowError.messageStringСтрока, связанная с объектом ошибки. Создает новый объект StackOverflowError.
DRMManagerError DRMManager отправляет событие DRMManagerError, чтобы сообщить об ошибке.Error DRMManager отправляет событие DRMManagerError, чтобы сообщить об ошибке. flash.net.drm.DRMManagerDRMManagerError Создает новый экземпляр класса DRMManagerError.messageStringОписание ошибки idintОбщий номер ошибки subErrorIDintУточненный номер ошибки Создает новый экземпляр класса DRMManagerError. toString Возвращает строку Error по умолчанию или значение, содержащееся в свойстве Error.message, если оно определено.Сообщение об ошибке. String Возвращает строку Error по умолчанию или значение, содержащееся в свойстве Error.message, если оно определено. subErrorID Уточненный номер ошибки.int Уточненный номер ошибки. IOError Исключение IOError выбрасывается при ошибках ввода-вывода.Error Исключение IOError выбрасывается при ошибках ввода-вывода. Например, исключение IOError выдается, если предпринята операция чтения/записи для сокета, который не подключен или отключился. В следующем примере выдается исключение IOError, когда предпринимается попытка закрыть звуковой поток, который не был загружен. package { import flash.display.Sprite; import flash.errors.IOError; import flash.media.Sound; public class IOErrorExample extends Sprite { public function IOErrorExample() { var music:Sound = new Sound(); try { music.close(); trace("Stream closed."); } catch (error:IOError) { trace("The stream could not be closed, or the stream was not open."); } } } } IOError Создает новый объект IOError.messageStringСтрока, связанная с объектом ошибки. Создает новый объект IOError. IllegalOperationError Исключение IllegalOperationError выбрасывается, если метод не реализован, или реализация не рассчитана на текущее применение.Error Исключение IllegalOperationError выбрасывается, если метод не реализован, или реализация не рассчитана на текущее применение.

Примеры исключений ошибки из-за недопустимой операции

  • Базовый класс, такой как DisplayObjectContainer, обеспечивает больше функций, чем рабочая область в состоянии поддерживать (например, маски).
  • Определенные методы расширенного доступа вызываются, когда компиляция проигрывателя не поддерживает расширенный доступ
  • Параметр mms.cfg запрещает действие FileReference.
  • ActionScript пытается выполнить вызов FileReference.browse(), когда уже открыто диалоговое окно обзора.
  • ActionScript пытается использовать неподдерживаемый протокол для объекта FileReference (например, FTP).
  • Из проигрывателя выполнения вызываются функции, используемые только для разработки
  • Предпринимается попытка задать имя объекта, помещенного на временную шкалу
В следующем примере демонстрируется применение обработчика IllegalOperationError. package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.errors.IllegalOperationError; public class IllegalOperationErrorExample extends Sprite { public function IllegalOperationErrorExample() { var child:Sprite = new Sprite(); try { addChild(child); } catch(e:IllegalOperationError) { trace(e); } } public override function addChild(child:DisplayObject):DisplayObject { throw new IllegalOperationError("addChild cannot be performed on the IllegalOperationErrorExample class"); } } }
IllegalOperationError Создает новый объект IllegalOperationError.messageStringСтрока, связанная с объектом ошибки. Создает новый объект IllegalOperationError.
EOFError Исключение EOFError выбрасывается при попытке чтения за концом доступных данных.flash.errors:IOError Исключение EOFError выбрасывается при попытке чтения за концом доступных данных. Например, ошибка EOFError выдается, когда вызывается один из методов чтения в интерфейсе IDataInput, а данных недостаточно для удовлетворения запроса на чтение. В следующем примере используется класс EOFErrorExample, чтобы продемонстрировать генерацию ошибки при попытке чтения за концом доступных данных. Это можно сделать, выполнив следующие действия:
  1. Конструктор создает объект ByteArray с именем byteArr и записывает логическое значение false в поток байтов с помощью метода writeBoolean().
  2. Позиция byteArr сбрасывается до 0 (начало потока данных).
  3. Один байт удаляется из потока данных с помощью метода readBoolean(). Теперь поток не содержит данных.
  4. В сегменте кода обработки ошибок, настроенного для перехвата объектов EOFError, второй раз вызывается метод readBoolean(), и исключение EOFError перехватывается и передается инструкции trace(), которая затем выдает сообщение об ошибке, связанное с объектами EOFError.
package { import flash.display.Sprite; import flash.errors.EOFError; import flash.utils.ByteArray; public class EOFErrorExample extends Sprite { public function EOFErrorExample() { var byteArr:ByteArray = new ByteArray(); byteArr.writeBoolean(false); trace(byteArr.length); // 1 byteArr.position = 0; try { trace(byteArr.readBoolean()); // false } catch(e:EOFError) { trace(e); } try { trace(byteArr.readBoolean()); } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } } } }
flash.utils.ByteArrayflash.utils.IDataInputflash.net.Socketflash.net.URLStreamEOFError Создает новый объект EOFError.messageStringСтрока, связанная с объектом ошибки. Создает новый объект EOFError.
InvalidSWFError Среда выполнения Flash выдает это исключение в случае обнаружения поврежденного SWF-файла.Error Среда выполнения Flash выдает это исключение в случае обнаружения поврежденного SWF-файла. InvalidSWFError Создает новый объект InvalidSWFError.messageStringСтрока, связанная с объектом ошибки. idint0 Создает новый объект InvalidSWFError.