diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-01-21 20:45:55 +0100 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-01-23 16:43:29 +0100 |
commit | eeea0dd1e74487edb0f707e571ddd14ec09686b0 (patch) | |
tree | 01b61c72c13d15506bc46bef3cd75ade65213c71 /lib/events.js | |
parent | 2b65399694440d0bab1c4e394898a4555e58c324 (diff) | |
download | android-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.js | 11 |
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 } |