JavaScript · ошибки
Конструкция try...catch
try...catch перехватывает исключение и позволяет программе продолжить работу по контролируемому сценарию. Используй конструкцию там, где ошибка ожидаема и её можно обработать.
Базовый пример
Код из try выполняется обычно. Если возникает исключение, оставшаяся часть блока пропускается и управление переходит в catch.
try {
const settings = JSON.parse(savedText);
applySettings(settings);
} catch (error) {
console.error('Не удалось прочитать настройки', error);
}
Создание ошибки
Через throw можно остановить выполнение, если данные не соответствуют требованиям. Объект Error хранит сообщение и стек вызовов.
function divide(a, b) {
if (b === 0) throw new Error('Деление на ноль');
return a / b;
}
Блок finally
finally выполняется независимо от результата. Он подходит для отключения индикатора загрузки или освобождения ресурса.
showLoader();
try {
await saveForm();
} catch (error) {
showError('Не удалось сохранить форму');
} finally {
hideLoader();
}
Частые ошибки
- Пустой catch.
- Показывать пользователю технический stack trace.
- Использовать исключения вместо обычного if.
- Забывать очистить состояние загрузки.
Практика
Прочитай настройки из localStorage через JSON.parse. Если данные повреждены, восстанови значения по умолчанию и выведи сообщение в консоль.
Связанные темы
async/await · Fetch API · localStorage
Практикум по теме
- Что показать, если сеть не ответила — Сервер может не ответить. Страница при этом обязана сказать, что случилось, и оставить способ повторить.