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
Was this helpful?