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

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

Компании: Kaspersky

Стек: JavaScript

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

В JavaScript ошибки в промисах перехватываются методом .catch() или вторым аргументом .then(). Например:

JAVASCRIPT
fetch('/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 функции:

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

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

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

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