3
我是nodejs和co的新手。我用下面的express來表示co,因爲它更像是我習慣於在c#中使用的異步,我認爲代碼更具可讀性。如何在全球使用co處理錯誤
(req, res) => {
co(function*(){
var book = req.book;
book.bookId = req.body.bookId;
book.title = req.body.title;
book.read = req.body.read;
yield book.save();
res.json(book);
}).catch(err => res.status(500).send(err));
}
問題是,我每次調用co時,都必須在catch函數中處理異常。我想在全球範圍內處理異常情況,而不是中間件。但據我所知,co吞下了未處理的異常,所以我必須在每次調用co時處理catch。
我想出的一個可能的解決方案是將co包裝在一個函數中,該函數自動處理catch函數中的異常,並使用該包裝的函數。例如:
var myCo = function(genFunc){
return co(genFunc)
.catch(err => someGlobalErrorHandler(err))
};
有沒有更好或更標準的方法?
您可以使用標準明確的錯誤處理寬度這個小LIB:https://github.com/mciparelli/co-express –
感謝。這正是我正在尋找的。也許添加您的評論作爲答案? –