Где обрабатывать ошибки в nodejs?

Читаю Handle errors centrally. Not within middlewares

Есть инкапсулированный, центральный обработчик ошибок:
module.exports.handler = new errorHandler();

function errorHandler() {
  this.handleError = async (err) => {
    await logger.logError(err);
    await sendMailToAdminIfCritical;
    await saveInOpsQueueIfCritical;
    await determineIfOperationalError;
  };
}


Далее, если я хочу использовать его в express\koa, то я подключаю error-handling middleware в конец, по вот такой схеме:
Some module throws an error -> API router catches the error -> it propagates the error to the middleware (e.g. Express, KOA) who is responsible for catching errors -> a centralized error handler is called -> the middleware is being told whether this error is an untrusted error (not operational) so it can restart the app gracefully.

// в конец после всех middleware
app.use((error, req, res, next) => {
    errorHandler.handleError(error)
}

Однако написано, что
Note that it’s a common, yet wrong, practice to handle errors within Express middleware – doing so will not cover errors that are thrown in non-web interfaces.

Вопрос - где в таком случае ставить обработчик ошибок, если не в middleware?
  • Вопрос задан
  • 436 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы