Обробка виключень

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

В процессе исполнения сценария возможно возникновение неустранимых ошибок, называемых исключениями. Примерами исключений являются обращение к несуществующему объекту или невозможность преобразования значения к заданному типу. Подробнее о реализации исключений см. описание объектов Error.

Операторы, описанные в этом разделе, предназначены для обработки исключений, возникающих в ходе исполнения сценария, и генерации собственных исключений. 3.6.7.2. Оператор try…catch

Оператор try…catch используется в тех фрагментах сценария, где может возникнуть исключение, для его обработки. Он имеет вид:

try {

 оператор1

} catch (исключение) {

 оператор2

}

Здесь исключение — любое имя переменной, а оператор1 и оператор2 — любые группы операторов JavaScript, заключенные в фигурные скобки {}.

Оператор1 содержит программный код, в котором возможно возникновение исключения. Если исключение не возникло, то после исполнения оператора1 управление передается обычным образом оператору, следующему за try…catch. Если же оно возникло, то информация об исключении заносится в локальную переменную исключение, и управление передается оператору2, который должен содержать код обработки этого исключения.

Если возникшее исключение не может быть здесь обработано, то оператор2 должен содержать оператор throw для передачи исключения обработчику исключений более высокого уровня. Пример использования этого оператора приведен в следующем разделе.

WDH+ См. также WDH+: Оператор try…catch в IE4. 3.6.7.3. Оператор throw

Оператор throw генерирует исключение, которое может быть обработано оператором try…catch. Он имеет вид:

throw исключение

где исключение — любое выражение.

Значение выражения исключение присваивается локальной переменной, указанной в операторе catch. Пример генерации исключения и его обработки:

function getMonthName(month) {

 month = month - 1; // Переводим month в индекс массива (1=январь, 12=декабрь)
 var months=new Array("январь","февраль","март","апрель","май","июнь","июль",
    "август","сентябрь","октябрь","ноябрь","декабрь");
 if (months[month] != null)
   return months[month];
 else
   throw "Неверный месяц";

}

try {

 monthName = getMonthName(myMonth); // возможно исключение

} catch (e) {

 monthName="неизвестно";

} document.write(monthName);

Логічні оператори