Kiedy wyjątek JavaScript jest zgłaszany w IE 8, jak mogę zobaczyć jego ślad stosu?Jak mogę uzyskać śledzenie stosu dla wyjątku JavaScript w IE 8?
Na przykład następujący kod z jQuery łapie wyjątek i ponownie go rzuca. Debugowanie w Visual Studio (2012), przerwy w realizacji jako wyjątek („E”) zostaje złapany przez jQuery, ale nie mogę dla życia mnie zobaczyć ślad stosu, gdzie wyjątek pochodzi z:
// 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;
}
Próbowałem już biblioteki stacktrace.js, ale wydaje się zignorować wyjątek, gdy przeglądarka jest IE 8, po prostu spada do produkcji stosu bieżącego klatki.
EDIT:
Jak widać na poniższym zrzucie ekranu, wyjątek nie ma właściwości odnoszące się do stosu:
Nie możesz umieścić punktu przerwania w bloku 'catch' i przeanalizować obiekt błędu * przed * ponownym zgłoszeniem? –
@ ŠimeVidas Obiekt Error nie ma śledzenia stosu, widzisz. Ma wiadomość i numer, ale bez śladu. – aknuds1
W programie Internet Explorer * Błąd * obiekty mają właściwość '.stack': http://jsfiddle.net/2HDBf/ (W gruncie rzeczy ta właściwość jest przeglądarką). –