JavaScript. Подробное руководство, 6-е издание, стр. 57
Следующий фрагмент иллюстрирует синтаксис и назначение инструкции
<b>try/catch/finally</b><b>try {</b><b> // Обычно этот код без сбоев работает от начала до конца.</b><b> // Но в какой-то момент в нем может быть сгенерировано исключение </b><b> // либо непосредственно с помощью инструкции throw, либо косвенно -</b><b> // вызовом метода, генерирующего исключение.</b><b>}</b><b>catch (е) {</b><b> // Инструкции в этом блоке выполняются тогда и только тогда, когда в блоке try </b><b> // возникает исключение. Эти инструкции могут использовать локальную переменную е,</b><b> // ссылающуюся на объект Error или на другое значение, указанное в инструкции throw. </b><b> // Этот блок может либо некоторым образом обработать исключение, либо </b><b> // проигнорировать его, делая что-то другое, либо заново сгенерировать </b><b> // исключение с помощью инструкции throw.</b><b>}</b><b>finally {</b><b> // Этот блок содержит инструкции, которые выполняются всегда, независимо от того,</b><b> // что произошло в блоке try. Они выполняются, если блок try завершился:</b><b> // 1) как обычно, достигнув конца блока</b><b> // 2) из-за инструкции break, continue или return</b><b> // 3) с исключением, обработанным приведенным в блоке catch выше</b><b> // 4) с неперехваченным исключением, которое продолжает свое</b><b> // распространение на более высокие уровни</b><b>}</b>Обратите внимание, что за ключевым словом catch следует идентификатор в скобках. Этот идентификатор похож на параметр функции. Когда будет перехвачено исключение, этому параметру будет присвоено исключение (например, объект
<b>Error</b><b>catch</b><b>catch</b>Далее приводится более реалистичный пример инструкции
<b>try/catch</b><b>factorial(),</b><b>prompt()</b><b>alert()</b><b>try {</b><b> // Запросить число у пользователя</b><b> var n = Number(prompt("Введите положительное число",""));</b><b> // Вычислить факториал числа, предполагая, что входные данные корректны </b><b> var f = factorial(n);</b><b> // Вывести результат </b><b> alert(n + "! = " + f);</b><b>}</b><b>catch (ex) { // Если данные некорректны, управление будет передано сюда</b><b> alert(ех); // Сообщить пользователю об ошибке</b><b>}</b>Это пример инструкции
<b>try/catch</b><b>finally</b><b>finally</b><b>catch</b><b>finally</b><b>try</b><b>try</b><b>try</b>В обычной ситуации управление доходит до конца блока
<b>try</b><b>finally</b><b>try</b><b>return</b><b>continue</b><b>break</b><b>finally</b>Если в блоке
<b>try</b><b>catch</b><b>catch</b><b>finally</b><b>catch</b><b>finally</b><b>catch</b>Если сам блок
<b>finally</b><b>return</b><b>continue</b><b>break</b><b>throw</b><b>finally</b><b>finally</b><b>return</b>