0

如果某个底层组件抛出错误,我如何通知 express.js 堆栈?我正在使用一个底层数据访问框架,它偶尔会引发特定错误(例如,当在数据库中找不到记录时)。

express.js 是否提供了一种直接跳转到 500 错误处理程序并将响应重定向到相应页面的方法?不幸的是,我看不到使用标准 express.js 方式(使用next中间件处理程序)的直接方法,除非我可能在任何地方都使用 try...catch,这也有点开销

4

2 回答 2

0

对于那些仍在寻找像我这样的答案的人:

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下方

于 2014-09-24T02:37:54.907 回答
0

通常您不会重定向到 500 页。您所做的是让异常传播,如果抛出异常,node.js 将为您执行 500。

我有一些我遵循的相关规则。也许你会发现它们很有用:

  • 切勿在异步代码(如 node.js)中使用 try/catch。错误通常通过提供的回调的第一个参数传播。
  • 如果我需要向用户返回错误,我会使用res.send('Error', 500);
于 2012-12-29T17:15:34.840 回答