如果在任何时候,我得到一个错误,通过尝试使用未定义的东西,我的整个快递应用程序崩溃与TypeError,而不是通过重定向到HTTP 500页面很好地处理它。
有没有办法一般地处理这些异常,或者我需要手动检查我的路由器方法?
答案 0 :(得分:2)
您是否尝试过docs - Express Error handling?
错误处理中间件的定义与常规中间件一样,但必须使用4的arity定义,即签名(err,req,res,next):
app.use(function(err, req, res, next) { console.error(err.stack); res.send(500, 'Something broke!'); });
虽然不是强制性的错误处理中间件通常是最后定义的......
答案 1 :(得分:0)
也许try { ... } catch(e) {...}
正是您要找的?
或者只检查值是否未定义。简单if (value) { ...
将完成工作
答案 2 :(得分:0)
正如现象所述,您可以使用快速错误处理程序中间件来处理集中位置的错误。
app.use(function(err, req, res, next) {
console.error(err.stack);
res.send(500, 'Something broke!');
});
比传递路由中的错误,您可以使用旁边的错误将错误传递给此中间件,如此
app.get('/login',function(req,res,next){
next("your error"); // The error middle-ware handle this error.
})