【发布时间】:2013-07-27 05:25:30
【问题描述】:
我有以下内容:
var http = require('http');
server = http.createServer(function(request, response) {
try {
// Register a callback: this happens on a new stack on some later tick
request.on('end', function() {
throw new Error; // Not caught
})
throw new Error; // Caught below
}
catch (e) {
// Handle logic
}
}
现在,第一个Error 被try...catch 捕获,但第二个Error 似乎没有被捕获。
几个问题:
- 第二个
Error不会因为它出现在不同的堆栈上而被捕获吗?如果是这样,我是否理解try...catch行为不受词汇限制,而是取决于当前堆栈?我的解释正确吗? - 是否有任何经过充分探索的模式来处理此类问题?
【问题讨论】:
-
我相信您对问题原因的看法是正确的。虽然想不出解决方案... :((除了回调中的另一个
try/catch,但我认为这不是您要寻找的)。 -
使用Domains。
标签: javascript node.js