Browse Source

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>
v2.0.2
Evan Lucas 10 years ago
parent
commit
8b9a1537ad
  1. 5
      lib/events.js
  2. 8
      test/parallel/test-event-emitter-errors.js

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

8
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/);
Loading…
Cancel
Save