如果在任何时候,我得到一个错误,通过尝试使用未定义的东西做某事,我的整个快速应用程序会因 TypeError 而崩溃,而不是通过重定向到 HTTP 500 页面来很好地处理它。
有什么方法可以处理这些异常,或者我需要手动检查我的路由器方法?
如果在任何时候,我得到一个错误,通过尝试使用未定义的东西做某事,我的整个快速应用程序会因 TypeError 而崩溃,而不是通过重定向到 HTTP 500 页面来很好地处理它。
有什么方法可以处理这些异常,或者我需要手动检查我的路由器方法?
您是否从docs-Express 错误处理中尝试过这个?
错误处理中间件的定义与常规中间件一样,但是必须使用 4 的数量定义,即签名 (err, req, res, next):
app.use(function(err, req, res, next) { console.error(err.stack); res.send(500, 'Something broke!'); });
虽然不是强制性的错误处理中间件通常是最后定义的......
也许try { ... } catch(e) {...}
是你正在寻找的?或者只是检查值是否未定义。简单if (value) { ...
就行
正如现象所提到的,您可以使用快速错误处理程序中间件在集中位置处理错误。
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.
})