【发布时间】:2019-05-25 01:29:15
【问题描述】:
对于同步错误,您可以像这样嵌套错误范围:
try {
try {
throw Error('e')
} catch(e) {
if(e.message !== 'f')
throw e
}
} catch(e) {
handleError(e)
}
这是我期望它工作的方式,但它没有(似乎域错误处理程序中的错误被抛出到顶部,跳过中间的任何域):
var domain = require('domain');
var dA = domain.create();
dA.on('error', function(err) {
console.log("dA: "+ err); // never happens
});
dA.run(function() {
var dB = domain.create();
dB.on('error', function(err) {
throw err
});
dB.run(function() {
setTimeout(function() {
console.log('dB')
throw 'moo'
},0)
});
});
有没有办法做到这一点?
【问题讨论】:
-
在一个域中运行的代码会创建另一个域这一事实不会使它们嵌套。
-
值得一提的是,域 API 可能会在节点的未来版本中发生变化。
标签: node.js error-handling node.js-domains