我有以下内容:
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
行为不受词汇限制,而是取决于当前堆栈?我是否正确解释了这一点? - 是否有任何经过充分探索的模式来处理此类问题?