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>
This commit is contained in:
Evan Lucas 2015-05-07 16:09:31 -05:00
parent 08d08668c9
commit 8b9a1537ad
2 changed files with 12 additions and 1 deletions

View File

@ -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;
}

View File

@ -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/);