> Как обрабатывать ошибки в промисах в JavaScript? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: EPAM, Яндекс
Стек: JavaScript
> Пример ответа
Обработка ошибок в промисах в JavaScript осуществляется двумя основными способами: через метод .catch() и с помощью try...catch в асинхронных функциях.
-
Метод
.catch()
Если промис переходит в состояниеrejected, управление передаётся в ближайший.catch()в цепочке. Это позволяет централизованно обрабатывать ошибки для нескольких последовательных промисов:JAVASCRIPTfetch('/api/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Ошибка:', error));Важно:
.catch()обрабатывает как ошибки самого промиса, так и исключения, возникшие в предыдущих.then(). -
try...catchсasync/await
В асинхронных функциях можно использовать синтаксис, похожий на синхронный код:JAVASCRIPTasync function getData() {try {const response = await fetch('/api/data');const data = await response.json();console.log(data);} catch (error) {console.error('Ошибка:', error);}}Этот подход более читаем и удобен для сложной логики, где требуется обрабатывать ошибки на разных этапах.
-
Глобальная обработка необработанных ошибок
Для предотвращения «проглатывания» ошибок используйте событиеunhandledrejection:JAVASCRIPTwindow.addEventListener('unhandledrejection', event => {console.error('Необработанная ошибка промиса:', event.reason);});
Рекомендации:
-
Всегда завершайте цепочку промисов
.catch(). -
В
async/awaitоборачивайте вызовы вtry...catch, особенно при работе с внешними API. -
Не смешивайте
.catch()иtry...catchв одном потоке - это усложняет отладку. -
Для критических операций (например, загрузка данных) добавляйте fallback-значения в
.catch()илиcatch-блоке.
> Похожие задачи по frontend
Как проверить наличие свойства в объекте в JavaScript
Что происходит при вызове методов объекта, объявленных разными способами в JavaScript
Как пройтись по всем элементам массива в JavaScript
Что будет если отправить запрос с пустым JSON объектом
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью