​Обработка ошибок, “try..catch”

Обычно скрипт в случае ошибки «падает» (сразу же останавливается), с выводом ошибки в консоль.


Но есть синтаксическая конструкция try..catch, которая позволяет «ловить» ошибки и вместо падения делать что-то более осмысленное.

Конструкция try..catch состоит из двух основных блоков: try, и затем catch:
try { // код... } catch (err) { // обработка ошибки } Работает она так:
Сначала выполняется код внутри блока try {...}. Если в нём нет ошибок, то блок catch(err) игнорируется: выполнение доходит до конца try и потом далее, полностью пропуская catch.
Если же в нём возникает ошибка, то выполнение try прерывается, и поток управления переходит в начало catch(err). Переменная err (можно использовать любое имя) содержит объект ошибки с подробной информацией о произошедшем.

Таким образом, при ошибке в блоке try {…} скрипт не «падает», и мы получаем возможность обработать ошибку внутри catch.

Конструкция try..catch может содержать ещё одну секцию: finally.
Если секция есть, то она выполняется в любом случае:

после try, если не было ошибок,
после catch, если ошибки были.
try { ... пробуем выполнить код... } catch(e) { ... обрабатываем ошибки ... } finally { ... выполняем всегда ... }