我正在使用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