Выбор ответа Middle Ошибки и логирование обновлено

Что делать в uncaughtException

Вопрос

Какой обработчик process.on("uncaughtException", ...) правильный для HTTP-сервиса?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Залогировать, отправить в трекер и выйти с ненулевым кодом. После непойманного исключения состояние процесса не гарантировано: транзакция могла остаться открытой, ресурс захваченным, объект полуобновлённым.

Варианты ответа

  1. Залогировать ошибку и продолжить обслуживать запросы
  2. Ничего не делать, чтобы процесс не упал и не потерял запросы
  3. Залогировать, отправить в трекер и выйти с ненулевым кодомправильный ответ
  4. Перезапустить только упавший обработчик маршрута

Разбор

После непойманного исключения состояние процесса не гарантировано: транзакция могла остаться открытой, ресурс захваченным, объект полуобновлённым. Безопасно только зафиксировать ошибку и выйти, а перезапуск отдать оркестратору или менеджеру процессов.

  • Продолжать работу опасно: возможны тихие порчи данных и утечки.
  • Пустой обработчик глотает баг.
  • Перезапустить отдельный обработчик в Node нельзя.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.