Пользовательская обработка ошибок в экспресс-подмодулях (например, на уровне обслуживания)

#node.js #express #error-handling

#node.js #экспресс #обработка ошибок

Вопрос:

Я знаю о документации Express, касающейся обработки ошибок, а именно использования next() для обработки ошибок в асинхронных функциях или throw для обработки ошибок в функциях синхронизации. Выбрасывание их из моего обработчика маршрута работает нормально, ошибки передаются в мой пользовательский обработчик ошибок, который я вставил через app.use().

Однако, чего я никогда не находил ни в одной документации, так это того, как мне лучше всего обрабатывать ошибки в асинхронной функции (например, на моем уровне обслуживания) или классе, который вызывается обработчиком маршрута. Должен ли я передавать next() этой функции? Я действительно не хочу этого делать, так как я хочу, чтобы все функции, специфичные для Express, были отделены от моей другой логики приложения.

 class someClassThatIsUsedInMyRouteHandler {
    async create() {
        throw new CustomError("some message", 401);
    }
}
 

Ответ №1:

О, чувак, попробовал несколько вещей, и в итоге проблема заключалась в типе (ошибка вместо ошибки в моем ErrorHandler). Выполнение следующего действия (ошибка) в моем контроллере работает 🙂