2013-05-15 17 views
23

Wydaje się to głupie pytanie, ale nie mogę dowiedzieć się, jak debugować wyjątków w IntelliJ IDEA. Googling też nie pomaga.wyjątek Jak korzystać IntelliJ IDEA za Punkty odcięcia

Próbuję utworzyć punkty przerwania wyjątków. Kiedy IDEA się zepsuła, oczekuję, że da mi stos wywołań, pokazujący, co prowadzi do metody, która rzuca wyjątek, jak również automatyczne okno zegarka, podobnie jak narzędzie do debugowania Visual Studio. Zamiast tego pokazuje wszystkie rodzaje nieczytelnych wiadomości o Launcher lub ClassLoader, ale nie ma śladów rzeczywistego wyjątku podczas pracy.

Jak dokładnie powinien być używany punkt przerwania wyjątków IDEA?

+0

Nie duplikat, ale odpowiedzi tutaj mogą rozwiązać problem: http: // stackoverflow.com/questions/8850698/debugger-only-stops-at-breakpoints-will-not-step-over –

Odpowiedz

8

I w końcu zorientowali się sam. W oknach View Breakpoints sprawdź Any Exception, ale odznacz znacznik dla Caught exception. Wyjątki programu uruchamiającego i modułu ładującego klasy są przechwytywane i obsługiwane wewnętrznie przez maszynę JVM. W ten sposób wszystkie wyjątki użytkowników zostaną przechwycone bez ręcznego określania typu wyjątku.

53

To działa bardzo dobrze, a ja naprawdę nie wiem jakie problemy masz z Launcher lub ClassLoader. Możliwe, że wybrano opcję przechwytywania Any exceptions, co oznacza, że ​​będzie przechwytywać wszystkie rodzaje wyjątków podczas ładowania systemu i ładowania klasy. Musisz dokonać konkretnych wyborów dotyczących wyjątków do złapania lub po prostu przejść przez wszystkie, dopóki wyjątek nie zostanie przechwycony.

Zresztą pokażę ci, jak skonfigurować bardzo prosty przypadek, a zobaczysz, że działa bardzo dobrze.

mam prosty przypadek, gdy NullPointerException zostanie wyrzucony.

Najpierw musisz ustawić wyjątek breakpoint.

Wprowadź okno View Breakpoints... naciskając Ctrl + Przesunięcie + F8. Następnie naciśnij mały znak + w lewym górnym rogu.

enter image description here

Wprowadź NullPointerException i naciśnij przycisk OK.

enter image description here

Upewnij się, że Any exception nie jest zaznaczone.

teraz uruchomić program, klikając prawym przyciskiem wewnątrz głównej metody i wybierz Debug 'SomeClass.main()'

enter image description here

I wreszcie oglądać, gdy wyjątek zostanie złapany, a będziesz miał wszystkie rzeczy, które można oczekiwać jak stosu wywołań i oglądaj okno.

enter image description here

+0

To było przerażające "+", które mnie potknęło (i które mnie tu sprowadziło). Przynajmniej IntelliJ jest o tym konsekwentny; teraz muszę się do tego przyzwyczaić. – fool4jesus

+3

Dzięki stary, uratowałeś mi życie! Żałuję, że nie mogłem cię pokonać 100000 razy – OWADVL