Блоки try... catch... finally... в JScript 5.
Пояснение для людей не знакомых с данной конструкцией
Конструкция try – catch - finally предназначена для перехвата ошибок (исключений). Если в блоке try каком-то операторе возникает ошибка, JScript игнорирует остальные операторы и переходит в блок catch, где находится блок обработки исключений. Последним выполняется блок finally, в котором обычно выполняют некие заключительные действия. Допускается использование неполной конструкции - без catch или finally.
Скажу сразу, что бы не было никаких недоразумений: JScript – это
JavaScript в интерпретации Microsoft, а 5-я версия предполагает наличие
Internet Explorer 5.0 (в 4-м IE всего лишь 3-я версия JScript).
Не знаю как вы, а я, сколько программирую на J[ava]Script мечтал,
что бы в этом языке появился наконец эта конструкция из двух слов,
но шли годы, а заветные слова так и оставались зарезервированными
и я уж было потерял всякую надежду, как вышел пятый IE...
И вот, однажды вечером, внося очередные изменения в свой JS Unix (http://www.chat.ru/~junix/) и роясь одновременно во внутренностях 5-го "зонда" взгляд мой зацепил знакомые "try, catch" и незнакомое "Error". Смутная надежда маленьким мерцающим огоньком загорелась в моей душе. Осторожно, не давая ей погаснуть я протянул руки к клавиатуре, набрал try... catch... и в место досадного "зарезервированные слова" получил радостное "предполагается наличие }". Надо было видеть меня в тот момент (или слышать), каюсь: я кричал, что Гейтс молодчина. Каюсь, потому что Гейтс – плохой дядя, сделал в пятой версии то, что надо было сделать еще в первой. Ну да ладно, это все замечательно, но надо было сделать так, что бы кроме пятого эксплорера, остальные браузеры не замечали этот блок. Хорошо, что в JScript есть такая замечательная вещь, как условная компиляция. Воспользовавшись ею можно скрыть все что угодно от посторонних глаз Netscape Navigator и Internet Explorer 4.01 и ниже. Таким образом, вся конструкция выглядит так (после точки с запятой – мои комментарии):
/*@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. При перехвате ошибки конструкцией try-catch созданный объект будет передан блоку catch. Примеры:
var err=new Error(-10,"Неверное число"); throw(err); throw(new Error(-4,"Ошибка"));
Таким образом JScript пополнился еще одной полезной конструкцией, существенно упрощающей жизнь программиста.
Оставить комментарий
Оставлять комментарии могут только зарегистрированные пользователи.
Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.


