403 Stimmen

Gibt es "Break on Exception" in IntelliJ?

Gibt es eine Funktion, die das Debugging beim ersten Auftreten einer Ausnahme automatisch unterbricht?

Wir haben also

  1. Anwendung starten
  2. etwas tun, das eine Ausnahme auslöst
  3. hat IntelliJ eine hervorgehobene Zeile angezeigt, in der die Ausnahme aufgetreten ist.

459voto

Mike Chaliy Punkte 24420

Run | View Breakpoints | Exception Breakpoints

199voto

Drew Noakes Punkte 282438

Eine schnelle Möglichkeit, den Dialog aufzurufen, ist die Taste Ctrl + SHIFT + F8 (Auf Mac: Cmd + SHIFT + F8 ), und klicken Sie dann auf die Registerkarte "Ausnahme-Haltepunkte". Wenn dies die letzte Registerkarte war, die Sie angezeigt haben, ist sie immer noch ausgewählt, so dass Sie die Unterbrechung von Ausnahmen leicht ein- und ausschalten können.

Dies führt dazu, dass IntelliJ an der Stelle im Code (oder Bibliothekscode) abbricht, an der die Ausnahme ausgelöst wurde. Insbesondere erhalten Sie eine "erste Chance" zur Behandlung der Ausnahme, bevor der Stack nach auszuführenden catch/finally-Blöcken durchsucht wird.


TIPP: Java neigt dazu, beim Laden von Klassen intern viele Ausnahmen zu erzeugen, so dass es ziemlich mühsam werden kann, alle Ausnahmen zu erkennen. Die gute Nachricht ist, dass Sie bestimmte Arten von Ausnahmen ausschließen können, indem Sie die Zustand Feld.

Zum Beispiel:

!(this instanceof java.lang.ClassNotFoundException)

Sie können mehrere solcher Bedingungen miteinander verketten mit && .

enter image description here

75voto

Tonatio Punkte 3326

Unter IntelliJ IDEA 14 gehen Sie zu:

Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"

Wenn Sie das Häkchen nicht entfernen Caught Exceptions wird die Ausführung jedes Mal angehalten, wenn die Java Framework löst eine interne Ausnahme aus.

19voto

Jose Da Silva Punkte 3496

In neueren Versionen von intellij ist es unter Laufen lassen > Haltepunkte anzeigen .

Dann können Sie prüfen Java-Ausnahme-Haltepunkte -> Jede Ausnahme .

Eine gute Möglichkeit, die Ausnahmen zu debuggen, ist die Verwendung Ihres Hauptanwendungspakets und der Wildcard .* . Auf diese Weise überspringen Sie alle Ausnahmen der anderen Bibliotheken, da Sie in den meisten Fällen nach Ausnahmen suchen, die von Ihrer Anwendung und nicht von einer anderen Bibliothek ausgelöst werden (was eine Menge Ausnahmen sein können).

Als Beispiel, wie im Bild gezeigt, verwende ich com.gs.mercury.* jedes Mal zu unterbrechen, wenn die Anwendung eine Ausnahme auslöst. Wenn Sie Ausnahmen für das verwenden, wofür sie da sind (um Ausnahmefälle zu behandeln und nicht um den Fluss normaler Situationen zu bewältigen), werden Sie fast immer nur dann anhalten, wenn Sie die gewünschte Ausnahme erreichen.

PD. Antwort nur hinzugefügt, um auf die ziemlich nützliche Klassenfilter auffangen .

Breakpoints

12voto

Avi Punkte 19623

Ja, die gibt es. Sie müssen einen Ausnahme-Haltepunkt (es kann "Jede Ausnahme" sein) im Haltepunkt-Dialog in IntelliJ IDEA definieren.

Die Ausnahmen können auf Wunsch nach Bedingung oder Klasse gefiltert werden, oder danach, ob Sie an abgefangenen oder nicht abgefangenen Ausnahmen interessiert sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X