TL / DR Есть ли в Express какой-либо код обработки ошибок по умолчанию, который не задокументирован?
Я столкнулся с каким-то удивительным поведением в Express (v4.17.1), и это обработка ошибок по умолчанию.
Я нахожусь на ранних стадиях создания API. Я собрал обработчик маршрута и подключил его к первому маршруту вместе с несколькими юнит-тестами.
Мой дизайн очень похож на описанный в этот ответ : у меня есть пользовательский класс с именем NotFoundError
, который расширяет Error
и включает в себя свойство statusCode
.
Маршрут выглядит так:
router.get('/api/resource/:id', ...);
Эта ошибка передается в функцию Express next
, когда, например, я запрашиваю базу данных и не могу найти строку с предоставленным значением :id
.
Теперь я ожидал, что напишет собственный обработчик ошибок, который обработает NotFoundError
и ответит кодом состояния 404. Но к моему удивлению, тест, который я написал для ошибки 404, пройден!
Я немного поиграл с моим кодом и обнаружил, что изменение свойства statusCode
в моем пользовательском классе ошибок (на myStatusCode
) приводит к сбою запроса с ошибкой 500 (что и ожидалось).
Так что Express, похоже, нравится свойство statusCode
, и оно знает, что с ним делать. Я не могу найти ничего в Экспресс-документации , которая описывает это поведение.
Это недокументированное поведение? Или что-то еще происходит?