Скачать 1.04 Mb.
|
^ В объектно-ориентированных языках программирования, в том числе и JavaScript, при возникновении ошибки создается экземпляр объекта Error, свойства которого содержат сведения об ошибке. Этот объект передается на обработку программе, в которой возникла ошибка. Если программа на языке JavaScript не обрабатывает ошибку, то объект передается обработчику по умолчанию среды выполнения сценариев Web-браузера. Обработчик выводит сообщение об ошибке и прекращает выполнение программы. Объект Error имеет следующие свойства (набор свойств в разных Web-браузерах разный):
Кроме того, для объекта ^ определены свойства constructor и prototype, а также функция toString() объекта Object (эта функция не определена в Internet Explorer). Как видно из списка свойств, общими для всех распространенных Web-браузеров являются свойства name и message, и поэтому только их рекомендуется использовать при обработке ошибок. Следует отметить, что при делении на ноль или невозможности преобразования строки в число, объект Error не создается. В этом случае переменной просто присваивается значение infinity или NaN. ^ В сценарии на языке JavaScript могут возникать ошибки одного из трех видов:
Для первых двух видов ошибок объект Error генерируется автоматически, однако набор этих ошибок, их имена и связанные с ними сообщения в разных Web-браузерах могут быть разными. Механизм обработки таких ошибок в JavaScript сводится к следующим действиям:
Пример 4.4.101. Обработка типовой ошибки с помощью объекта Error: В примере при выполнении предложения x = y + 2 использована переменная y, которая ранее не была объявлена и значение которой не определено (если переменная была объявлена, ей присваивается значение undefined, но объект Error не создается). // Переключатель наличия ошибки установлен в false isError = false; // Блок проверки наличия ошибки try { // Выполнение сложения при незаданном значении y x = y + 2; } // Блок обработки ошибок catch(e) { // Переключатель наличия ошибки установлен в true isError = true; // Вывод имени ошибки и сообщения об ошибке alert("name='" + e.name + "'" + "\nmessage='" + e.message + "'" + "\ndescription='" + e.description + "'" + "\nnumber='" + e.number + "'" + "\nfileName='" + e.fileName + "'" + "\nlineNumber='" + e.lineNumber + "'" + "\nstack='" + e.stack + "'"); } // Блок finally finally { // Если нет ошибки if(!isError) // Вывод значения x alert("x=" + x); } В этом фрагменте сценария при выполнении предложения x = y + 2 использована переменная y, которая ранее не была объявлена и значение которой не определено (если переменная была объявлена, ей присваивается значение undefined, но объект Error не создается). При выполнении этого фрагмента на экран в разных Web-браузерах будут выведены следующие сообщения:
В приведенном выше примере создание (или «бросание») объекта Error инициируется средой выполнения сценария JavaScript в Web-браузере. В случае пользовательской ошибки ее обнаружение и обработка также выполняется в блоке try…catch…finally, однако в этом случае пользователь должен:
Объект Error создается с помощью одного из следующих предложений: var имя-объекта-Error = new Error(); var имя-объекта-Error = new Error(сообщение); В первом случае объект создается со значениями свойств, равными пустой строке, а во втором случае значение параметра сообщение становится значением свойства message. «Бросание» объекта Error в блоке try выполняется с помощью предложения throw имя-объекта-Error Это предложение передает управление в блок catch для обработки «брошенной» ошибки. Пример 4.4.102. Создание и использование собственного объекта Error: // Создание нового экземпляра объекта Error var outOfRangeError = new Error("Индекс вне диапазона"); // Присвоение имени ошибке outOfRangeError.name = "OutOfRangeError"; // Создание массива a a = new Array(1, 2, 3, 4, 5); … // Блок проверки наличия ошибки try { // Ввод индекса массива aIndex = prompt("Введите индекс элемента в массиве a:",""); // Если индекс неверный if(aIndex < 0 || aIndex > a.length - 1) // "бросание" объекта Error блоку catch throw outOfRangeError; // Определение значения элемента массива x = a[aIndex]; // Вывод элемента массива alert("x=" + x); } // Блок обработки ошибок catch(e) { // Вывод сообщения об ошибке alert("Ошибка: " + e.name + ". " + e.message + ": " + aIndex); } Если будет введено правильное значение индекса массива, например, ^ , будет выполнено предложение x = a[aIndex]; а затем будет выведено сообщение:
Если же значение индекса массива будет неверным, например, 5, то будет «брошен» объект Error и управление будет передано блоку catch, в котором будет выведено следующее сообщение:
Файл: |
![]() | Создание документа (размеры, цвет фона, частота кадров). Выравнивание объектов в документе | ![]() | Дополнения к Перечню объектов коммунальной собственности, включенных в перечни объектов |
![]() | Ия 17 объектов коммунальной собственности. С учетом 6-и объектов, переходящих из Перечня объектов, подлежащих приватизации в 2005... | ![]() | Цель работы: Изучить основные виды и способы анимации параметров объектов в 3d studio max: анимация по ключевым кадрам, анимация... |
![]() | В отличие от финансовых инвестиций, недвижимость имеет явно выраженную материальную форму, более высокий уровень защиты от инфляции,... | ![]() | Анализируя свойства этих простых трехмерных геометрических объектов можно сделать вывод о том, что форма каждого из них имеет свои... |
![]() | Инспектирование грузов и объектов (Агро сектор, Металлургия). Управление залоговым хранением. Техническое инспектирование объектов... | ![]() | Многократное копирование элементов и объектов. Полукруглые, круглые стены с возможностью редактирования. Загрузка объектов в режиме... |
![]() | Диаграммы объектов применяют при моделировании статических видов системы с точки зрения проектирования и процессов. При этом моделируется... | ![]() | Целью Программы является создание банка данных для обеспечения органов исполнительной власти полноразмерными копиями документов и... |