Browse Source

Fix exception output for module load exceptions

So instead of:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^

You will now see:

path/to/foo.js:1
throw new Error('bar');
      ^

This is a sub-set of isaacs patch here:

https://github.com/joyent/node/issues/3235

The difference is that this patch purely adresses the exception output,
but does not try to make any behavior changes / improvements.
v0.8.7-release
Felix Geisendörfer 13 years ago
committed by isaacs
parent
commit
bf9d8e9214
  1. 9
      lib/module.js
  2. 4
      test/message/stack_overflow.out
  3. 4
      test/message/throw_custom_error.out
  4. 4
      test/message/throw_non_error.out
  5. 4
      test/message/undefined_reference_in_new_context.out

9
lib/module.js

@ -304,11 +304,16 @@ Module._load = function(request, parent, isMain) {
}
Module._cache[filename] = module;
var hadException = true;
try {
module.load(filename);
} catch (err) {
hadException = false;
} finally {
if (hadException) {
delete Module._cache[filename];
throw err;
}
}
return module.exports;

4
test/message/stack_overflow.out

@ -1,6 +1,6 @@
before
module.js:311
throw err;
*test*message*stack_overflow.js:31
function stackOverflow() {
^
RangeError: Maximum call stack size exceeded

4
test/message/throw_custom_error.out

@ -1,6 +1,6 @@
before
module.js:311
throw err;
*test*message*throw_custom_error.js:31
throw { name: 'MyCustomError', message: 'This is a custom message' };
^
MyCustomError: This is a custom message

4
test/message/throw_non_error.out

@ -1,6 +1,6 @@
before
module.js:311
throw err;
*/test/message/throw_non_error.js:31
throw { foo: 'bar' };
^
[object Object]

4
test/message/undefined_reference_in_new_context.out

@ -1,7 +1,7 @@
before
module.js:311
throw err;
*test*message*undefined_reference_in_new_context.js:34
script.runInNewContext();
^
ReferenceError: foo is not defined
at evalmachine.<anonymous>:*

Loading…
Cancel
Save