> Как перехватывать ошибки в промисах и чем это отличается от try-catch (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: витринатв

Стек: JavaScript

> Пример ответа

Для перехвата ошибок в промисах используется метод .catch(). Он вызывается, когда промис переходит в состояние rejected, и принимает функцию-обработчик с ошибкой в качестве аргумента. Например:

JAVASCRIPT
fetch('/api/data')
.then(response => response.json())
.catch(error => console.error('Ошибка:', error));

Также можно использовать второй аргумент в .then() - then(onFulfilled, onRejected), но это менее гибко, так как не ловит ошибки из самого onFulfilled.

Основное отличие от try-catch в том, что try-catch работает синхронно и не может перехватить ошибку, возникшую в асинхронной операции (например, внутри промиса или setTimeout). Для асинхронного кода try-catch применяется только с async/await:

JAVASCRIPT
async function getData() {
try {
const response = await fetch('/api/data');
const data = await response.json();
} catch (error) {
console.error('Ошибка:', error);
}
}

Здесь await преобразует асинхронный вызов в синхронно-подобный, позволяя try-catch работать. Без await ошибка промиса не будет поймана. Таким образом, .catch() - это базовый способ для промисов, а try-catch - для async/await, что делает код более читаемым.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью