Skip to content Skip to sidebar Skip to footer

Javascript Exception Handling - Displaying The Line Number

When catching / handling exceptions in JavaScript, how can I determine what the call stack was when the exception occurred? (and also if possible what the line number was) try {

Solution 1:

Each browser handles this differently, so there isn't a universal way to do it. This blog post has some good code to dump a stack trace for most supported browsers. I don't think there is a good way to provide the line number.

If you're looking to debug one function in particular, Firebug has a good stack trace function (vis console.trace()).

Solution 2:

Have a look at this.

A way to analyse the available information:

try 
{ 
    doInit(); 
} catch(err) 
{ 
    var vDebug =""; 
    for (var prop in err) 
    {  
       vDebug +="property: "+ prop+" value: ["+ err[prop]+"]\n"; 
    } 
    vDebug +="toString(): "+" value: ["+ err.toString() +"]"; 
    status.rawValue = vDebug; 
}

Solution 3:

I've discovered that in JavaScript running under IE it is not possible to capture a stack trace at the point that an exception is caught. According to this PDF the only way of getting a stack trace in IE is if you don't handle the exception.

Solution 4:

With most errors, you can examine the stack trace, which will include the line and column number of the error location:

try {
  thrownewError('foo');
} catch(e) {
  console.log(e.message);
  console.log(e.stack);
  const [, lineno, colno] = e.stack.match(/(\d+):(\d+)/);
  console.log('Line:', lineno);
  console.log('Column:', colno);
}

This line 13 is correct, because that is the line in the HTML where the error came from in the response from stacksnippets.net:

enter image description here

Note that this will not work for non-errors thrown, like throw null or throw 'foo' (which are not recommended for precisely this reason).

Post a Comment for "Javascript Exception Handling - Displaying The Line Number"