2016-10-07 41 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派上用場的地方。

相關問題