抛出错误时,将响应重定向到HTTP 500错误处理程序

时间:2012-12-29 17:09:43

标签: javascript node.js express

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

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

2 个答案:

答案 0 :(得分:0)

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

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

  • 永远不要在异步代码中使用try / catch(如node.js)。错误通常通过提供的回调的第一个参数传播。
  • 如果我需要向用户返回错误,请使用res.send('Error', 500);
  • 执行此操作

答案 1 :(得分:0)

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

1-使用express default 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