error-queue
Minimal script for capturing and storing uncaught global errors for later processing.
Motivation
For performance reasons you might want to load and start your error-tracking solution asynchronously. At the same time it's good to track the most crucial errors that happen before the full implementation is loaded and initialized - and this is what errorQueue
does.
Inspired by and based on Sentry Loader.
How it works
The script sets tiny onerror
and onunhandledrejection
handlers that store the arguments they have been called with in a global queue for later processing.
Original handlers for these events are still called (and can be restored after the errorQueue
is no longer needed).
Usage
Start capturing
Include the script at the top of your page (preferably with an inline <script>
tag).
Restore and process
Call window.errorQueue.r()
to restore original event handlers.
Use window.errorQueue
as an array to get the captured exceptions. Each element is a pair: [handlerName, arguments]
.
window.errorQueue.r();
window.errorQueue.forEach(([handlerName, arguments]) => {
if (handlerName === 'onerror') {
yourOnErrorHandler.apply(window, arguments);
}
if (handlerName === 'onunhandledrejection') {
yourOnUnhandledRejectionHandler.apply(window, arguments);
}
});
License
MIT