Необработанное отклонение в Node.js
Вопрос
Что по умолчанию произойдёт в Node.js 22, если промис отклонился и у него нет обработчика?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Ничего: ошибка молча проглатывается, а промис остаётся отклонённым
- Только предупреждение в консоли, процесс продолжает работу как обычно
- Промис будет автоматически повторён один раз, а затем ошибка уйдёт в лог
- Процесс упадёт: с Node 15 по умолчанию
--unhandled-rejections=throwправильный ответ
Разбор
Начиная с Node 15 необработанное отклонение по умолчанию превращается в неперехваченное исключение, и процесс падает с ненулевым кодом. До Node 15 было только предупреждение, отсюда частое заблуждение. Перехватить можно событием process.on('unhandledRejection'), но правильнее не оставлять промисы без catch. В браузере в такой ситуации срабатывает событие unhandledrejection и ошибка выводится в консоль, страница продолжает работать.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Исключение в таймере внутри промиса
Следующий вопрос
Две цепочки от одного отклонённого промиса