11

Quando viene lanciata un'eccezione JavaScript in IE 8, come posso visualizzare la traccia dello stack?Come posso ottenere la traccia dello stack per un'eccezione JavaScript in IE 8?

Ad esempio, il seguente codice di jQuery cattura un'eccezione e la riavvia. Debug in Visual Studio (2012), le pause di esecuzione come eccezione ('e') è catturato da jQuery, ma non posso per la vita di me vedere l'analisi dello stack di dove l'eccezione proviene da:

// 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; 
} 

Ho provato la libreria stacktrace.js, ma sembra ignorare l'eccezione quando il browser è IE 8, semplicemente tornando a produrre la traccia dello stack del frame corrente.

EDIT:

Come si può vedere dalla schermata qui sotto, l'eccezione non ha proprietà relative allo stack:

JavaScript exception object

+2

Non è possibile inserire un punto di interruzione nel blocco 'catch' e analizzare l'oggetto Errore * prima che * venga nuovamente generato? –

+0

@ ŠimeVidas L'oggetto Error non ha traccia di stack, vedi. Ha un messaggio e un numero, ma nessuna traccia. – aknuds1

+0

In Internet Explorer * Errore * gli oggetti hanno una proprietà '.stack': http://jsfiddle.net/2HDBf/ (Di fatto, quella proprietà è cross-browser.) –

risposta

2

dà un'occhiata a questo link: DIY javascript stack trace

Il suo esempio sta funzionando sul mio IE8.

+0

Il codice su quel post del blog è rotto. C'è un errore di sintassi nella regex. – mpen

Problemi correlati