summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Lucas <evanlucas@me.com>2015-05-07 16:09:31 -0500
committerEvan Lucas <evanlucas@me.com>2015-05-12 08:33:20 -0500
commit8b9a1537ad5c34c92215660291e962558b6bc8d3 (patch)
tree81c3e6200c1b692cbcdcb2273ea94f24a053ce9f
parent08d08668c957d990e0c52b733e3b29d939a61113 (diff)
downloadnode-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.js5
-rw-r--r--test/parallel/test-event-emitter-errors.js8
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/);