Catch and log handler exceptions in events.trigger

rather than throwing handler errors in the call to `.trigger()`

Extensions can register buggy event handlers.
These should not be able to cause failures in the event-triggering code paths.

This should fix several avenues where extensions (or other bugs) could prevent a notebook from loading.
pull/1941/head
Min RK 9 years ago
parent e1e760367d
commit 316bfdbd1e

@ -22,5 +22,16 @@ define(['base/js/namespace'], function(Jupyter) {
Jupyter.Events = window._Events;
Jupyter.events = window._events;
return $([window._events]);
var events = $([window._events]);
// catch and log errors in triggered events
events._original_trigger = events.trigger;
events.trigger = function (name, data) {
try {
this._original_trigger.apply(this, arguments);
} catch (e) {
console.error("Exception in event handler for " + name, e, arguments);
}
}
return events;
});

Loading…
Cancel
Save