Генерация и обработка исключений
Для обработки исключений в JavaScript существует конструкция try...catch...finally. Для возбуждения исключений используется оператор throw. Это сравнительно новые структуры языка. Они специфицируются в третьей версии стандарта ECMAScript и поддерживаются, начиная с JavaScript 1.4 и JScript 5.0.
Оператор throw
Этот оператор служит для программного "вбрасывания" исключения. Данная возможность может быть использована, например, для прерывания исполнения большого количества операторов, для выхода из многих вложенных циклов и т. д. Синтаксис оператора throw прост.
throw <выражение>;
Выражение, являющееся аргументом оператора, будет передано в блок catch при обработке исключения. Его значением может быть строка, число, либо любой другой объект. Посредством этого значения удобно передавать в блок catch информацию о причине вбрасывания исключения.
Конструкция try...catch...finally
Эти операторы предоставляют возможность обрабатывать ошибки, возникающие на этапе прогона, и продолжать дальнейшее выполнение скрипта.
Синтаксис операторов следующий:
try { <инструкции блока try> }
catch(<идентификатор исключения>) {<инструкции блока catch>} [ finally { <инструкции блока finally> } ]
Конструкция работает следующим образом. Сначала исполняются инструкции в блоке try. Если на этом этапе возникает ошибка (или выполняется оператор throw), управление передается в блок catch. Предложение finally не является обязательным, но если оно присутствует, то блок операторов finally выполняется в любом случае, вне зависимости от того, возникла ли ошибка в блоке try. Блок операторов finally выполняется только после исполнения блоков try и/или catch, что делает его удобным местом для расположения кода освобождения данных, созданных в блоке try.
Как видно из приведенного примера синтаксиса, в операторе catch специфицируется некий идентификатор. Этот идентификатор действителен только во время исполнения блока catch и определяет значение, переданное оператору throw, возбудившему исключение, либо специальный объект, созданный браузером (если исключение возникло не по причине применения throw) и позволяющий получить информацию о причине ошибки.
Далее приведен пример использования конструкции try...catch... finally для предотвращения возникновения ошибки времени исполнения скрипта. В блоке try производится попытка создать объект несуществующего типа DummyObject, в блоке catch выводится сообщение об ошибке, а в блоке finally очищаются данные, созданные в try.
Try {
var arr = new Array(10000);
var obj = new DummyObject();
}
catch(e)
{
alert('Ошибка времени исполнения: ' + e);
}
finally
{
delete arr;
}
alert('Выполнение скрипта продолжается...');
Do'stlaringiz bilan baham: |