2010-05-18 10 views
7

Co staram się osiągnąć, to zarejestrować globalny moduł obsługi, aby wychwycić wszystkie nieprzechwycone wyjątki. Przeszukując sieć, udało mi się znaleźć osoby, które wskazują na window.onerror, ale to mi nie wystarczy. Wygląda na to, że window.onerror jest wywoływany tylko w przypadku błędów, a nie wyjątków. Przyjmijmy następujący kod:Jak radzić sobie z niezałatwionymi wyjątkami w javascriptu bez try/catch-block?

function windowError(message, url, line) { 
     alert(message, url, line); 
    } 
    window.onerror=windowError; 
    throw("uncaught"); 

niezaprzeczalnie przechwycony wyjątek nie wyzwoli obsługi windowError. (Przy użyciu przeglądarki Firefox 3.6.3)

Wszelkie sugestie?

+1

Powyższy kod działa świetnie na chrome v12. Twoje zdrowie. –

Odpowiedz

2

Z tego co wiem, potrzebujesz bloków try/catch, aby tak się stało. W tym sensie trzeba wiedzieć, kiedy poradzić sobie z rodzajami błędów.

+0

znalazłem ten wpis podczas wyszukiwania w Google, aby dowiedzieć się, jak wychwycić wyjątki javascript niepołączone. Nie można przewidzieć wszystkich wyjątków, które wystąpią w danym kodzie. window.onerror to dobry sposób, aby przynajmniej wyświetlić błąd. Poszedłem dalej i na mojej stronie zamieszczam dane w zdarzeniu window.onerror na webmethod na moim serwerze i zapisałem błąd w dzienniku aplikacji. – Anders

4

Błędy zostały złowione w ten sam sposób jak wyjątkami w javascript i faktycznie, w swoim przykładzie komunikat get zaalarmował (Firefox 3.6.3).

+0

To dość dziwne. Nie dostaje żadnego ostrzeżenia w Firefoksie 3.6.3. – Taloncor

+0

Próbowałem twojego przykładu na prostej stronie html i to działa. To dziwne, że Firefox nie "ostrzega" ... Czy próbowałeś w innej przeglądarce? –

Powiązane problemy