我已经阅读了几个小时关于 Node.js 异常处理的文章。我了解 using 的缺点uncaughtException
,我了解关闭进程有助于防止“任何事情都可能发生”的任何“未知状态”。我知道使用域是要走的路,并且我了解如何正确实现域,特别是显式绑定......
...但我仍然没有得到任何基本错误处理的结果。
我希望能够捕获任何未捕获的异常以进行日志记录。我不介意杀死该过程或其他任何被认为“不受欢迎”的东西。我只想要一个日志。
我觉得我不应该将所有内容都包装在 try/catch 中或使用一些库来emit
出错......如果我错了,请纠正我,我会改变我的方式。
我正在使用 Node 和 Express,我有以下简单代码:
var express = require('express');
var domain = require('domain');
var serverDomain = domain.create();
serverDomain.on('error', function(err) {
console.log("SERVER DOMAIN ERROR: " + err.message);
});
serverDomain.run(function() {
var app = express();
app.get('/testing', function() {
app.nonExistent.call(); // this throws an error
});
var server = app.listen(8000, function() {
console.log('Listening on port %d', server.address().port);
});
});
该错误显示在控制台中,但控制台从未收到“服务器域错误...”消息。我也尝试将请求/响应包装在他们自己的域中,但无济于事。更令人失望的是,使用以下内容也不起作用:
process.on('uncaughtException', function(err) {
console.log('uncaughtException caught the error');
});
难道我做错了什么?我从这里去哪里?我怎样才能捕捉到上述错误?