何时应该使用error handling中间件function

在示例A中捕获中间件function中的错误和响应的优点是什么?

例子A

function(req, res, next) { if (err) { err.message = 'Not Found'; res.status(404).json(err); return; } } 

将错误传递给error handling中间件,如例B所示。

例子B

 function(req, res, next) { if (err) { var err = new Error('Not Found'); err.status = 404; next(err); } } 

error handling中间件:

 app.use(function(err, req, res, next) { res.status(err.status || 500); res.json({message: "error"}); }); 

想象一下,你正在通过几个函数来处理它的请求,而在第一个函数中的错误是肤浅的。 您仍然可以处理请求,但是您需要发送警告或之后处理错误。 也许你想收集所有在pipe道中的错误报告回来。 例B允许这样做。

但想象一下这个错误是至关重要的,而且你知道你将无法继续下去。 在这种情况下,你不能再调用下一个函数,因为下一个函数将不知道如何处理一个根本的破坏请求。 这里是例子A派上用场的地方。