summaryrefslogtreecommitdiff
path: root/lib/events.js
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-01-21 20:45:55 +0100
committerAnna Henningsen <anna@addaleax.net>2019-01-23 16:43:29 +0100
commiteeea0dd1e74487edb0f707e571ddd14ec09686b0 (patch)
tree01b61c72c13d15506bc46bef3cd75ade65213c71 /lib/events.js
parent2b65399694440d0bab1c4e394898a4555e58c324 (diff)
downloadandroid-node-v8-eeea0dd1e74487edb0f707e571ddd14ec09686b0.tar.gz
android-node-v8-eeea0dd1e74487edb0f707e571ddd14ec09686b0.tar.bz2
android-node-v8-eeea0dd1e74487edb0f707e571ddd14ec09686b0.zip
events: show inspected error in uncaught 'error' message
If there is no handler for `.emit('error', value)` and `value` is not an `Error` object, we currently just call `.toString()` on it. Almost always, using `util.inspect()` provides better information for diagnostic purposes, so prefer to use that instead. Refs: https://github.com/nodejs/help/issues/1729 PR-URL: https://github.com/nodejs/node/pull/25621 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Matheus Marchini <mat@mmarchini.me>
Diffstat (limited to 'lib/events.js')
-rw-r--r--lib/events.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/events.js b/lib/events.js
index 10cec4bd69..fab8652ebf 100644
--- a/lib/events.js
+++ b/lib/events.js
@@ -172,9 +172,18 @@ EventEmitter.prototype.emit = function emit(type, ...args) {
// up in Node's output if this results in an unhandled exception.
throw er; // Unhandled 'error' event
}
+
+ let stringifiedEr;
+ const { inspect } = require('internal/util/inspect');
+ try {
+ stringifiedEr = inspect(er);
+ } catch {
+ stringifiedEr = er;
+ }
+
// At least give some kind of context to the user
const errors = lazyErrors();
- const err = new errors.ERR_UNHANDLED_ERROR(er);
+ const err = new errors.ERR_UNHANDLED_ERROR(stringifiedEr);
err.context = er;
throw err; // Unhandled 'error' event
}