Вебсправочник
Справочник JavaScript

try, catch и finally: обработка ошибки и завершающее действие

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

Назначение

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

Как это работает

catch перехватывает ошибки, возникшие внутри синхронного выполнения try, либо отклонение ожидаемого через await обещания в async-функции. Произвольная будущая ошибка таймера не попадает в уже завершённый try.

Пример

const log=[];
try {throw new Error('Учебная ошибка');}
catch(error){log.push(error.message);}
finally{log.push('завершено');}
console.assert(log[0]==='Учебная ошибка');
console.assert(log[1]==='завершено');

Что должно получиться

Ошибка обработана, после чего выполняется finally. Пример не подавляет неизвестные рабочие ошибки: он показывает контролируемое исключение с заранее известным текстом.

Граница применения и частая ошибка

Не возвращайте результат из finally без серьёзной причины: он может перекрыть предыдущее возвращаемое значение или исключение. Обычно в finally освобождают ресурс или снимают флаг загрузки.

Самостоятельная проверка

Проверьте успешный и ошибочный сценарии. В обоих случаях отметка завершающего действия должна появляться, но сообщение об ошибке — только при исключении.

JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.