emit error object on process.on('uncaughtException') in renderer

Chromium added the actual `error` object to the 5th parameter in `window.onerror`. This should be emitted as opposed to the `errorMsg` string. Worse yet, since `errorMsg` wasn't an instance of `Error`, any code that assumes this in any `process.on('uncaughtException')` handler would fail. Also, correctly emitting the error provides the stack trace.

This is now an HTML5 standard.

Sources:
- https://html.spec.whatwg.org/multipage/webappapis.html#errorevent
- https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror
- https://code.google.com/p/chromium/issues/detail?id=147127
This commit is contained in:
JP Richardson 2015-07-10 14:38:03 -05:00
parent 967c273ddb
commit d6ae874038

View file

@ -77,7 +77,7 @@ if nodeIntegration in ['true', 'all', 'except-iframe', 'manual-enable-iframe']
global.__dirname = __dirname global.__dirname = __dirname
# Redirect window.onerror to uncaughtException. # Redirect window.onerror to uncaughtException.
window.onerror = (error) -> window.onerror = (message, filename, lineno, colno, error) ->
if global.process.listeners('uncaughtException').length > 0 if global.process.listeners('uncaughtException').length > 0
global.process.emit 'uncaughtException', error global.process.emit 'uncaughtException', error
true true