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