0

如果在任何时候,我得到一个错误,通过尝试使用未定义的东西做某事,我的整个快速应用程序会因 TypeError 而崩溃,而不是通过重定向到 HTTP 500 页面来很好地处理它。

有什么方法可以处理这些异常,或者我需要手动检查我的路由器方法?

4

3 回答 3

1

您是否从docs-Express 错误处理中尝试过这个?

错误处理中间件的定义与常规中间件一样,但是必须使用 4 的数量定义,即签名 (err, req, res, next):

app.use(function(err, req, res, next) {
   console.error(err.stack);
   res.send(500, 'Something broke!');
});

虽然不是强制性的错误处理中间件通常是最后定义的......

于 2012-12-30T10:35:57.170 回答
0

也许try { ... } catch(e) {...}是你正在寻找的?或者只是检查值是否未定义。简单if (value) { ...就行

于 2012-12-30T10:31:25.730 回答
0

正如现象所提到的,您可以使用快速错误处理程序中间件在集中位置处理错误。

app.use(function(err, req, res, next) {
console.error(err.stack);
res.send(500, 'Something broke!');
});

除了从你的路线传递错误,你可以使用 next 像这样将错误传递给这个中间件

app.get('/login',function(req,res,next){
next("your error"); // The error middle-ware handle this error.
})
于 2012-12-30T15:59:23.557 回答