如果某个底层组件抛出错误,我如何通知 express.js 堆栈?我正在使用一个底层数据访问框架,它偶尔会引发特定错误(例如,当在数据库中找不到记录时)。
express.js 是否提供了一种直接跳转到 500 错误处理程序并将响应重定向到相应页面的方法?不幸的是,我看不到使用标准 express.js 方式(使用next
中间件处理程序)的直接方法,除非我可能在任何地方都使用 try...catch,这也有点开销
如果某个底层组件抛出错误,我如何通知 express.js 堆栈?我正在使用一个底层数据访问框架,它偶尔会引发特定错误(例如,当在数据库中找不到记录时)。
express.js 是否提供了一种直接跳转到 500 错误处理程序并将响应重定向到相应页面的方法?不幸的是,我看不到使用标准 express.js 方式(使用next
中间件处理程序)的直接方法,除非我可能在任何地方都使用 try...catch,这也有点开销
对于那些仍在寻找像我这样的答案的人:
1- 使用 express 默认的 errorHandler 中间件
app.use(express.errorHandler());
或者
2-提供您自己的错误处理中间件:
app.use(function (error, req, res, next) {
res.status(500);
res.render("500.jade", {});
});
理想情况下,您希望使用第一个选项DEV
和第二个选项PROD
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.use((function (error, req, res, next) {
res.status(500);
res.render("500.jade", {});
});
注意:错误处理程序应策略性地放置在 app.router下方
通常您不会重定向到 500 页。您所做的是让异常传播,如果抛出异常,node.js 将为您执行 500。
我有一些我遵循的相关规则。也许你会发现它们很有用:
res.send('Error', 500);