2016-10-07 25 views
2

什么是捕捉错误,并从中间件功能内响应像在例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"}); 
    }); 

回答

0

想象一下,你是通过管道多种功能的要求来处理它,并在第一功能之一的错误是肤浅的。您仍然可以处理请求,但需要发送警告或之后处理错误。也许你想收集管道中的所有错误报告。示例B允许这样做。

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

相关问题