Get the actual Javascript Error object with window.onerror

Julien Genestoux picture Julien Genestoux · Aug 17, 2011 · Viewed 21.7k times · Source

Javascript has this great callback window.onerror. It's quite convenient to track any error. However, it calls with the error name, the file name and the line. It's certainly not as rich as getting the actual error object from a try...catch statement. The actual error object contains a lot more data, so I am trying to get that. Unfortunately, try...catch statement do not work fine when you start having async code.

Is there a way to combine and get the best of both worlds? I initially looked for a way to get the last error triggered within an onerror block, but it looks like JS doesn't store that.

Any clue?

Answer

Archaeron picture Archaeron · Jan 7, 2014

this is now possible in some browsers. The spec was updated to include the actual error with stacktrace as the 5th parameter.

the problem is that not every browser supports this yet, so you could do something like this:

window.onerror = function(message, filename, lineno, colno, error)
{
    if(error != null)
    {
        //handle the error with stacktrace in error.stack
    }
    else
    {
        //sadly only 'message', 'filename' and 'lineno' work here
    }
};