我有一個API使用swagger集成在node.js上的express和一個如下定義的資源。 Swagger的默認錯誤處理程序捕獲到(!req.params.id)檢查中引發的錯誤。從mongoDB刪除調用回調中引發的錯誤不會被捕獲,給我下面的錯誤。該錯誤看起來像它與回調函數的作用域/順序有關,並且作爲node.js的新成員,我希望得到如何正確執行此操作的建議,以保持異步性。 -Thanksnode.js:拋出錯誤,它沒有被捕獲
events.js:74 throw TypeError('Uncaught, unspecified "error" event.'); ^TypeError: Uncaught, unspecified "error" event.
exports.remove = {
'spec' : {
"collapsed...for...brevity..." : "...",
"params" : [ {
"paramType" : "path",
"name" : "id",
"collapsed...for...brevity..." : "...",
}],
"errorResponses" : [ swe.notFound('id'), swe.invalid('id') ],
"nickname" : "remove"
},
'action' : function(req, res) {
if (!req.params.id) {
throw swe.invalid('id'); // THIS ERROR IS CAUGHT
}
req.coll.remove({_id : req.coll.id(req.params.id)}, function(e, result) {
if (e) {
throw swe.invalid('collection'); // THIS ERROR IS NOT CAUGHT
}
res.send({msg : 'success'});
});
}
};
你說的沒有抓到的意思,是不是被一些自定義錯誤處理程序捕獲,或做它不會在控制檯中拋出錯誤? – adeneo
異步處理程序拋出的異常不容易被捕獲。如何解決導致它拋出異常的問題? – Pointy