Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: promise, throw

Можно ли выбросить ошибку внутри then и как она будет обработана

Да, внутри then можно выбросить ошибку с помощью throw. Такая ошибка автоматически превращает Promise в rejected. Она будет поймана ближайшим catch ниже по цепочке. По сути, throw внутри then эквивалентен return Promise.reject(error).

Короткий ответ

Да, внутри then можно выбросить ошибку с помощью throw. Такая ошибка автоматически превращает Promise в rejected. Она будет поймана ближайшим catch ниже по цепочке. По сути, throw внутри then эквивалентен return Promise.reject(error).

Длинный ответ

Как работает ошибка в then

Если внутри then:

  1. выбрасывается ошибка (throw)

  2. возвращается Promise.reject(...)

то цепочка переключается в режим ошибки.

Пример с throw

Promise.resolve(1)
  .then(v => {
    throw new Error('boom');
  })
  .catch(e => {
    console.log(e.message);
  });

Результат:

  • catch поймает ошибку "boom"

Эквивалент через reject

Promise.resolve(1)
  .then(() => {
    return Promise.reject('fail');
  })
  .catch(e => console.log(e));

Что если catch нет

  1. Ошибка “провалится” дальше по цепочке

  2. Если не будет ни одного catch, появится UnhandledPromiseRejection

Связь с finally

  1. finally выполнится до следующего catch

  2. Но ошибку он не поглотит, если сам не обработает ее

Вывод

Ошибки внутри then — нормальная и ожидаемая практика. Они автоматически превращаются в rejected Promise и обрабатываются ближайшим catch, что делает цепочки Promise предсказуемыми и удобными.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#promise

#throw

Подпишись на React Developer в телеграм