我正在使用node-mongodb-native驅動程序。我試過Express.js - 在MongoDB中未找到記錄時顯示自定義404頁面
collection.findOne({email: '[email protected]'}, function(err, result) {
if (!result) throw new Error('Record not found!');
});
但是,錯誤被mongodb驅動程序捕獲並且快速服務器終止。
這種情況的正確方法是什麼?
===編輯===
我在node_modules/mongodb/lib/mongodb/connection/server.js
connectionPool.on("message", function(message) {
try {
......
} catch (err) {
// Throw error in next tick
process.nextTick(function() {
throw err; // <-- here throws an uncaught error
})
}
});
This Works!關於'app.error'在3.x中的描述,我在某處讀過它,但我忘記了它在哪裏。在附註中,你說「異步操作引發的錯誤不能很好地通過Express處理」。那麼,如果我在附註前使用您的解決方案,是否有任何潛在的問題? – powerboy 2012-07-15 20:20:18
爲什麼你調用'next'而不是直接從回調中渲染錯誤頁面?我可以理解,如果錯誤處理程序是巨大的,但對於這樣的簡單情況是否有優勢?只是想提高我的表達知識。 :) – meloncholy 2012-07-15 20:20:41
@meloncholy - 我想要一個地方來處理所有錯誤,包括運行時錯誤和顯式地在應用程序中拋出的錯誤。 – powerboy 2012-07-15 20:22:41