捕获错误并从中间件功能中响应的好处是什么,如示例A。
示例A
function(req, res, next)
{
if (err) {
err.message = 'Not Found';
res.status(404).json(err);
return;
}
}
而不是将错误传递给错误处理中间件,如示例B。
示例B
function(req, res, next)
{
if (err) {
var err = new Error('Not Found');
err.status = 404;
next(err);
}
}
错误处理中间件:
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.json({message: "error"});
});
发布于 2016-10-17 05:24:26
假设您正在通过几个函数来处理请求,而第一个函数中的一个错误是肤浅的。您仍然可以处理请求,但需要发送警告或事后处理错误。也许您希望收集管道中的所有错误,报告它们。示例B允许这样做。
但是,假设错误是关键的,并且您知道您将无法继续。在这种情况下,您不能调用next,因为下一个函数将不知道如何处理一个根本失效的请求。这里是示例A派上用场的地方。
https://stackoverflow.com/questions/39918985
复制