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 в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.