Mehrere Catch-Blöcke
Swipe um das Menü anzuzeigen
Beim Arbeiten mit Ausnahmen in Java müssen häufig verschiedene Fehlertypen behandelt werden, die im Code auftreten können. Mehrere Catch-Blöcke ermöglichen es, auf unterschiedliche Ausnahmetypen innerhalb einer einzigen try-catch-Struktur separat zu reagieren. Durch das Platzieren mehrerer catch-Blöcke nach einem try-Block kann für jede Ausnahmeklasse eine eigene Behandlungslogik festgelegt werden. Dieser Ansatz erhöht die Robustheit des Codes, da spezifische Probleme wie Eingabefehler, arithmetische Fehler oder Nullreferenzen situationsabhängig unterschiedlich behandelt werden können.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
Die Reihenfolge der Catch-Blöcke ist entscheidend, da Java jeden Catch-Block der Reihe nach von oben nach unten prüft, um einen passenden Ausnahmetyp zu finden.
Da Ausnahmen in einer Hierarchie organisiert sind, muss ein Catch-Block für eine Superklasse (wie Exception) immer nach den Catch-Blöcken für deren Unterklassen (wie NullPointerException oder ArithmeticException) stehen.
Befindet sich ein Catch-Block für die Superklasse vor denen der Unterklassen, erzeugt der Compiler einen Fehler, da die Catch-Blöcke für die Unterklassen dann nicht mehr erreichbar wären. Das Verständnis dieser Hierarchie stellt sicher, dass Ausnahmen im Programm möglichst präzise behandelt werden.
Main.java
12345678910111213141516package com.example; public class Main { public static void main(String[] args) { try { int[] numbers = {1, 2, 3}; System.out.println("Result: " + (10 / numbers[3])); } catch (ArithmeticException e) { System.out.println("ArithmeticException caught: " + e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException caught: " + e.getMessage()); } catch (Exception e) { System.out.println("General Exception caught: " + e.getMessage()); } } }
Im obigen Programm versucht der try-Block, 10 durch den Wert am Index 3 des Arrays numbers zu teilen. Da das Array jedoch nur drei Elemente enthält (Indizes 0, 1 und 2), führt der Zugriff auf numbers[3] zu einer ArrayIndexOutOfBoundsException.
Tritt eine Ausnahme auf, prüft Java die einzelnen catch-Blöcke der Reihe nach. Zuerst wird nach einer ArithmeticException gesucht, dann nach einer ArrayIndexOutOfBoundsException und schließlich nach einer allgemeinen Exception. Da die ausgelöste Ausnahme mit ArrayIndexOutOfBoundsException übereinstimmt, wird nur dieser catch-Block ausgeführt und die anderen werden übersprungen. Dies zeigt, wie Java den spezifischsten passenden catch-Block auswählt, um sicherzustellen, dass die Ausnahme angemessen behandelt wird.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen