Блоки try… catch… finally… в JScript 5
Заметка была впервые опубликована на сайте «Цитфорум»
Пояснение для людей не знакомых с данной конструкцией:
- Конструкция try — catch — finally предназначена для перехвата ошибок (исключений). Если в блоке try
каком-то операторе возникает ошибка, JScript игнорирует остальные операторы и переходит в блок catch, где находится блок обработки исключений. Последним выполняется блок finally, в котором обычно выполняют некие заключительные действия. Допускается использование неполной конструкции — без catch или finally.
Скажу сразу, что бы не было никаких недоразумений: JScript — это JavaScript в интерпретации Microsoft,
Не знаю как вы, а я, сколько программирую на J[ava]Script мечтал, что бы в этом языке появился наконец эта конструкция из двух слов, но шли годы, а заветные слова так и оставались зарезервированными и я уж было потерял всякую надежду, как вышел пятый IE…
И вот, однажды вечером, внося очередные изменения в свой JS Unix и роясь одновременно во внутренностях
/*@cc_on @*/ ; Включаем условную компиляцию
/*@if (@_jscript_version>4) ; Проверяем версию JScript
try ; Сам блок try
{@end @*/
Result=eval(expression); ; Делаем что-то полезное
/*@if (@_jscript_version>4)
} catch (err) ; «Ловим» ошибку
{
alert(err.description); ; Сообщение об ошибке
Result='';
} finally
{
alert(Result); ; Завершающие действия
};
@end @*/
/*@cc_off @*/ ; Выключаем условную компиляциюГде еrr — имя объекта Error, который будет создан при возникновении ошибки, в него будут помещены параметры ошибки. Объект Error имеет три конструктора и два свойства:
err=new Error();
err=new Error(number);
err=new Error(number, description);Свойство (и параметр конструктора) number — числовое значение (номер ошибки), свойство description (так же параметр конструктора) — строка, описание ошибки. Некоторые числовые значения и соответствующие им описания ошибок приведены в таблице ниже:
| Номер ошибки | Описание ошибки |
| -2146823279 | Определение отсутствует |
| -2146827282 | Предполагается наличие ‘)’ |
| -2146827273 | Незавершенная строковая константа |
| -2146827286 | Ошибка синтаксиса |
| -2146827280 | Предполагается наличие { |
| -2146827850 | Объект не поддерживает это свойство или метод |
| -2146827843 | Команда не поддерживается объектом |
| -2146827859 | Невозможно создание объекта сервером программирования объектов |
| -2146828235 | Файл не найден |
Существует способ программно возбудить исключение (создать ошибку) — достаточно вызвать оператор throw с созданным ранее объектом Error. При перехвате ошибки конструкцией
var err=new Error(-10,"Неверное число");
throw(err);
throw(new Error(-4,"Ошибка"));Таким образом JScript пополнился еще одной полезной конструкцией, существенно упрощающей жизнь программиста.
Web-программист казанского центра Интернет Степанищев Е.В.