Expressjs如何确定要调用的错误处理程序。如果我们有多个错误句柄

时间:2019-06-21 05:50:29

标签: javascript node.js express error-handling

我很好奇,当我们有多个错误处理程序时,express如何决定要调用哪个错误处理程序(next(err))。

1 个答案:

答案 0 :(得分:2)

如果您有多个错误处理程序,则会按照将它们放入.use语句的顺序来调用它们。为了传递错误,每个错误处理程序都必须执行next(err)。

来自expressjs文档:

app.use(logErrors)
app.use(clientErrorHandler)
app.use(errorHandler)

以文档中的示例为例:

function errorHandler (err, req, res, next) {
  if (res.headersSent) {
    return next(err)
  }
  res.status(500)
  res.render('error', { error: err })
}

因此,使用next(err)语句将错误从处理程序传递到处理程序。在该处理程序中,您可以决定要做什么。例如,您可以检查特定错误,然后仅对特定错误采取行动。

expressjs documentation for errorhandling