Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Сколько catch реально нужно в цепочке Promise

Вопрос проверяет понимание распространения ошибок и грамотной организации обработки ошибок в цепочках Promise.

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

Технически достаточно одного catch в конце цепочки. Он перехватит любую ошибку, возникшую выше. Дополнительные catch нужны только тогда, когда ошибку нужно обработать локально и продолжить выполнение цепочки. Лишние catch без необходимости усложняют код и ухудшают читаемость.

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

Базовый принцип

Promise-цепочка распространяет ошибку вниз, пока не встретит catch.

  1. Ошибка возникла в then

  2. Все последующие then пропускаются

  3. Выполняется первый подходящий catch ниже

Минимально достаточный вариант

fetchData()
  .then(parse)
  .then(save)
  .catch(handleError);
  • Любая ошибка из fetchData, parse или save попадет в handleError

Когда имеет смысл несколько catch

  1. Нужно обработать ошибку и продолжить цепочку

  2. Разные этапы требуют разной логики обработки

Пример:

fetchData()
  .catch(() => getFallbackData())
  .then(process)
  .catch(logError);

Важный нюанс

Если catch:

  • обработал ошибку

  • вернул значение

то цепочка снова считается успешной.

Вывод

Один catch в конце — стандарт и best practice. Несколько catch используют осознанно, когда нужно восстановиться после ошибки и продолжить выполнение.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

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

#promise

#catch

#error

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