> Как перехватывать ошибки в промисах и чем это отличается от try-catch (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: витринатв
Стек: JavaScript
> Пример ответа
Для перехвата ошибок в промисах используется метод .catch(). Он вызывается, когда промис переходит в состояние rejected, и принимает функцию-обработчик с ошибкой в качестве аргумента. Например:
JAVASCRIPTfetch('/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:
JAVASCRIPTasync 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, что делает код более читаемым.
> Похожие задачи по frontend
Что такое NaN и в каких случаях он возникает
Какой опыт работы с JavaScript
Как обрабатывать валидацию JSON схемы с большим количеством полей и вложенных объектов
Как игнорировать порядок элементов в массивах при сравнении JSON в тестах
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью