Выбор ответа Middle Ошибки и логирование обновлено
Что делать в uncaughtException
Вопрос
Какой обработчик process.on("uncaughtException", ...) правильный для HTTP-сервиса?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Залогировать, отправить в трекер и выйти с ненулевым кодом. После непойманного исключения состояние процесса не гарантировано: транзакция могла остаться открытой, ресурс захваченным, объект полуобновлённым.
Варианты ответа
- Залогировать ошибку и продолжить обслуживать запросы
- Ничего не делать, чтобы процесс не упал и не потерял запросы
- Залогировать, отправить в трекер и выйти с ненулевым кодомправильный ответ
- Перезапустить только упавший обработчик маршрута
Разбор
После непойманного исключения состояние процесса не гарантировано: транзакция могла остаться открытой, ресурс захваченным, объект полуобновлённым. Безопасно только зафиксировать ошибку и выйти, а перезапуск отдать оркестратору или менеджеру процессов.
- Продолжать работу опасно: возможны тихие порчи данных и утечки.
- Пустой обработчик глотает баг.
- Перезапустить отдельный обработчик в Node нельзя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.