diff options
author | Evan Lucas <evanlucas@me.com> | 2015-05-07 16:09:31 -0500 |
---|---|---|
committer | Evan Lucas <evanlucas@me.com> | 2015-05-12 08:33:20 -0500 |
commit | 8b9a1537ad5c34c92215660291e962558b6bc8d3 (patch) | |
tree | 81c3e6200c1b692cbcdcb2273ea94f24a053ce9f | |
parent | 08d08668c957d990e0c52b733e3b29d939a61113 (diff) | |
download | node-new-8b9a1537ad5c34c92215660291e962558b6bc8d3.tar.gz |
events: provide better error message for unhandled error
Previously, in the event of an unhandled error event, if the error is a
not an actual Error, then a default error is thrown. Now, the argument
is appended to the error message and added as the `context` property
of the error.
PR-URL: https://github.com/iojs/io.js/pull/1654
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
-rw-r--r-- | lib/events.js | 5 | ||||
-rw-r--r-- | test/parallel/test-event-emitter-errors.js | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/events.js b/lib/events.js index 63d79cea6d..3ea798b3bd 100644 --- a/lib/events.js +++ b/lib/events.js @@ -140,7 +140,10 @@ EventEmitter.prototype.emit = function emit(type) { } else if (er instanceof Error) { throw er; // Unhandled 'error' event } else { - throw new Error('Uncaught, unspecified "error" event.'); + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; } return false; } diff --git a/test/parallel/test-event-emitter-errors.js b/test/parallel/test-event-emitter-errors.js new file mode 100644 index 0000000000..5ee2c87052 --- /dev/null +++ b/test/parallel/test-event-emitter-errors.js @@ -0,0 +1,8 @@ +var EventEmitter = require('events'); +var assert = require('assert'); + +var EE = new EventEmitter(); + +assert.throws(function() { + EE.emit('error', 'Accepts a string'); +}, /Accepts a string/); |