我只是想知道当我们有多个错误处理程序时,快递如何决定调用哪个错误处理程序(next(err((。
如果您有多个错误处理程序,将按照您在 .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 文档