Search code examples
node.jsnode.js-domains

Why domains does not catch below exception?


Why domain does not handle below error?

var globalDomain = domain.createDomain();

globalDomain.run( function() {
    // Why below exception does not get handled by globalDomain?
    throw "some error"; 
});

globalDomain.on('error', function(msg) {
    console.log("In global error event:" + msg);
});

Again, It works perfectly well with below code,

var globalDomain = domain.createDomain();

globalDomain.run( function() {
    setTimeout(function(){
        throw "some error from timeout";
    },0);
});

globalDomain.on('error', function(msg) {
    console.log("In global error event:" + msg);
});

Solution

  • var globalDomain = domain.createDomain();
    
    globalDomain.on('error', function(msg) {
        console.log("In global error event:" + msg);
    });
    
    globalDomain.run( function() {
        //  exception gets handled by globalDomain !!
        throw "some error"; 
    });