express的错误处理
定义错误处理函数:
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
})
- 错误处理函数带4个参数,第一个是error
- 错误处理函数的定义必须在所有的middleware和route定义之后
- 错误处理函数也可以是由多个链组成
例如:
app.use(function (err, req, res, next) {
console.error(err.stack)
next(err)
})
app.use(function (err, req, res, next) {
if (req.xhr) {
res.status(500).send({error: 'Something failed!' })
} else {
res.status(500).render('error', { error: err })
}
})
因为本质上还是定义middleware,自然可以链式处理,差异就是一个是三个参数,另一个是四个参数。