Ошибки времени выполнения
— это ошибки, которые возникают во время работы скрипта. Причиной являются события, не предусмотренные програм- мистом.
В некоторых языках (например, в PHP) ошибки времени выполнения возни- кают из-за деления на ноль или обращения к несуществующему элементу массива. В языке JavaScript в этих случаях программа прервана не будет. При попытке деления на ноль возвращается значение Infinity:
window.alert(5/0); // Infinity
При обращении к несуществующему элементу массива возвращается значе-
ние undefined:
var arr = [ 1, 2];
window.alert(arr[20]); // undefined
Очень часто ошибки времени выполнения возникают при использовании ус-
ловий:
if (x>5) window.alert("x > 5");
else doument.write(x + "<br>"); // Строка с ошибкой
В этом примере никакой ошибки не будет, пока соблюдается условие "x>5". Как только условие перестанет выполняться, сразу возникнет ошибка, и вы- полнение программы будет прервано.
3.14.4. Обработка ошибок
Перехватить и обработать ошибки позволяет конструкция try/catch/finally.
Конструкция имеет следующий формат:
try {
<Выражения, в которых перехватываем ошибки>
}
[catch ([<Ссылка на объект Error>]) {
<Обработка ошибки>
}]
[finally {
<Выражения, которые будут выполнены в любом случае>
}]
Выражения, в которых могут возникнуть ошибки, размещаются в блоке try. Если внутри этого блока возникнет исключение, то управление будет пере- дано в блок catch. В качестве параметра в блоке catch можно указать пере- менную, через которую будет доступен объект Error, содержащий описание ошибки. Если в блоке try ошибки не возникло, то блок catch не выполняет- ся. Если указан блок finally, то выражения внутри этого блока будут вы- полнены независимо от того, возникла ошибка или нет. Блоки catch и fi- nally являются необязательными, но хотя бы один из них должен быть указан.
В некоторых случаях требуется не обрабатывать ошибку, а, наоборот, указать программе, что возникла неисправимая ошибка, и прервать выполнение всей программы. Для этого предназначен оператор throw:
if (d < 0)
throw new Error("Переменная не может быть меньше нуля");
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)