33 votes

Comment puis-je obtenir la trace de la pile pour une exception JavaScript dans IE 8 ?

Lorsqu'une exception JavaScript est levée dans IE 8, comment puis-je voir sa trace de pile ?

Par exemple, le code suivant de jQuery attrape une exception et la relance. Lors du débogage dans Visual Studio (2012), l'exécution s'interrompt lorsque l'exception ('e') est détectée par jQuery, mais je ne parviens pas à voir la trace de la pile d'où provient l'exception :

// resolve with given context and args
resolveWith: function( context, args ) {
    if ( !cancelled && !fired && !firing ) {
        firing = 1;
        try {
            while( callbacks[ 0 ] ) {
                callbacks.shift().apply( context, args );
            }
        }
        // We have to add a catch block for
        // IE prior to 8 or else the finally
        // block will never get executed
        catch (e) {
            throw e;
        }
        finally {
            fired = [ context, args ];
            firing = 0;
        }
    }
    return this;
}

J'ai essayé le stacktrace.js mais il semble ignorer l'exception lorsque le navigateur est IE 8, se contentant de produire la trace de la pile de la trame actuelle.

EDIT :

Comme vous pouvez le voir sur la capture d'écran ci-dessous, l'exception n'a aucune propriété relative à la pile :

JavaScript exception object

-1voto

Anuj Shah Points 397

Ça ne marche pas ! !

function getStackTrace(e) {
  var stack = [];
  while (e) {
    stack.push({
      fileName: e.fileName,
      lineNumber: e.lineNumber,
      name: e.name,
      message: e.message,
      stack: e.stack
    });
  }
  return stack;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X