Выбор ответа Junior HTTP-сервер, Express, NestJS обновлено
Как Express узнаёт обработчик ошибок
Вопрос
Как Express отличает middleware-обработчик ошибок от обычного?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: По числу параметров: (err, req, res, next). Express смотрит на fn.length.
Варианты ответа
- По имени функции
errorHandlerилиonError - По тому, что он зарегистрирован последним в цепочке
- По числу параметров:
(err, req, res, next)правильный ответ - По вызову
app.error(...)вместоapp.use
Разбор
Express смотрит на fn.length. Функция с четырьмя параметрами считается обработчиком ошибок и вызывается только после next(err) или исключения. Если убрать неиспользуемый next, Express сочтёт её обычным middleware.
- Имя функции не учитывается.
- Регистрировать его последним правильно, но признаком это не является.
- Метода
app.errorнет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.