I wrote a simple test of nested domains which looks like this:

var topDomain = domain.create();
var subDomain = domain.create();
topDomain.add(subDomain);

topDomain.on("error", function(err) {
    console.log("Top saw an error: " + err.message);
});

subDomain.on("error", function(err) {
    console.log("Sub saw an error: " + err.message);

    throw new Error("bar")
});

topDomain.run( function() {
    subDomain.run(function() {
        throw new Error("foo");
    });
});

What I was expecting to happen is

   1. subDomain catches the first error (foo) and prints a message
   2. Since subDomain is a member of topDomain, topDomain catches the 
   second error (bar), which is thrown from a subDomain event.  Now topDomain 
   prints out a message.
   3. Done
   4. That is, the output should look like:

Sub saw an error: foo

Top saw an error: bar


That's what happens when I run node under the IntelliJ debugger (no 
breakpoints set, just run it to completion.)   But if I run node without 
the debugger, either under IntelliJ or directly from the command line, the 
output is


Sub saw an error: foo

/Users/mike/Documents/workspace-sts-2.9.0.RELEASE/mms/src/js/scripts/testDomains.js:107

    throw new Error("bar")

          ^

Error: bar

    at Domain.<anonymous> 
(/Users/mike/Documents/workspace-sts-2.9.0.RELEASE/mms/src/js/scripts/testDomains.js:107:11)

    at Domain.EventEmitter.emit (events.js:88:17)

    at process.uncaughtHandler (domain.js:60:20)

    at process.EventEmitter.emit (events.js:115:20)


That is, the first error is caught but not the second one.   This is v0.8.1 
on Mac.

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to