01. try-catch-finally

Исключения перехватываются с помощью обработчика try-catch-finally. Когда возбуждается исключение, интерпретатор JS немедленно прерывает нормальное выполнение программы и переходит к ближайшему обработчику исключений.

try {
    ...
} catch (err) {
    ...
} finally {
    ...
}⟧

Работает try-catch-finally так:

  • Выполняется код внутри блока try.

  • Если в нём ошибок нет, то блок catch(err) игнорируется, то есть выполнение доходит до конца try и потом прыгает через catch.

  • Если в нём возникнет ошибка, то выполнение try на ней прерывается, и управление прыгает в начало блока catch(err).

  • При этом переменная err (можно выбрать и другое название) будет содержать объект ошибки с подробной информацией о произошедшем.

  • Если есть блок finally, то он срабатывает вне зависимости от того, было выброшено исключение или нет.

  • И блок catch, и блок finally не являются обязательными, однако после блока try должен обязательно присутствовать хотя бы один из них.

  • Если блок finally возвращает значение, то данное значение становится возвращаемым значением всей связки try-catch-finally. Значения, возвращаемые блоками try и catch, будут проигнорированы.

try..catch работает только в синхронном коде:

try {
  setTimeout(() => throw new Error(), 1000); // throws in console
} catch (e) {
  alert("do not work");
}

Last updated