2009-10-15 6 views
5

Jest to związane z IE, ponieważ IE jest środowiskiem, którego używam do testowania tego, ale chcę wiedzieć, czy możesz wpłynąć na trafność właściwości obiektu błędu, gdy rzucisz błąd. Rozważmy następujący skrypt:Błędy rzutowania w JavaScript z trafnością obiektu błędu

function MyClass (Arg1, Arg2) // Line 5 of my.js 
{ 
    if (typeof Arg1 != "string") 
     throw new Error("Invalid argument passed for MyClass"); 
    // Do some other stuff here 
} 

Dalej kodzie masz

var myvar = new MyClass(100, "Hello"); // Line 3201 of my.js 

więc powyższe byłoby wyrzucić błąd, ale błąd podano w informacji debugowania pokaże błąd wyrzucane na linii 9 pliku my.js zamiast linii 3201. Czy można to zmienić za pomocą standardowych metod?

Odpowiedz

2

To, czego naprawdę szukasz, to ślad stosu dla błędu. Nie ma w tym żadnych standardów, ale większość przeglądarek zapewnia pewne sposoby wykrywania. Wynikiem szybkiego wyszukiwania jest ten przykład.

+0

Dziękuję za odpowiedź, sprawdziłem śledzenie stosu bez debuggera i znalazłem całkiem przydatny link http://eriwen.com/javascript/js-stack-trace/. Buduję gadżety pulpitu Windows (zbudowane na IE) i zamiast używać Visual Studio do debugowania, zwykle po prostu obsługuję window.onerror i alarmuję z linią/komunikatem o błędzie, więc mogę przejść bezpośrednio do niego w kodzie - jest to wystarczająco szybkie i łatwe, ale widzę, że widok stosu może być jeszcze bardziej użyteczny. –

+0

Uświadomiłem sobie, że Twój link był ten sam - whoops :) –

+0

Oznaczono jako odpowiedź, ponieważ była to pierwsza. Dzięki :) –

2

W firefox możesz użyć właściwości stosu, gdy zauważysz błąd. W innych przeglądarkach możesz użyć właściwości message.

Zobacz ten link, jak złapać stacktrace.

+0

Znalazłem to łącze wcześniej i jest całkiem interesujące, dzięki. –

Powiązane problemy