Exceptions Kontrollfluss
🚧 | Diese Seite befindet sich in Bearbeitung | 🚧 |
🤓 | Diese Seite ist eine Bewertungsrichtlinie, die ab Blatt 3 annotiert und ab Blatt 4 abgezogen wird. | 🤓 |
Beschreibung
Wir haben uns in Runtime Exceptions schon ein bisschen angeschaut, wie wir grob mit Exceptions umgehen können und was wir bei unchecked Exceptions zu beachten haben.
Auch haben wir uns angeschaut, wie wir im Code damit umgehen sollen, wenn wir Exceptions fangen wollen.
Jetzt wollen wir uns noch ein weiteres wichtiges Thema zu Exceptions anschauen. Nämlich den Kontrollfluss - oder besser - wie man mit ihnen keinen Kontrollfluss durchführt.
Es liegt schon fast auf der Zunge, Exceptions zu werfen, diese direkt zu fangen um damit einen ungewünschten Zustand zu behandeln oder sogar zu verhindern. Dafür gibt es allerdings Guard-Clauses.
Sprich:
Es sollen innerhalb eines try-catch Blocks keine Exceptions geworfen werden um diese frühzeitig zu beenden oder sogar absichtlich auszulösen.
Negativbeispiel
public class Example {
public static void main(String[] args) {
try {
if (args.length != 1) {
throw new IllegalArgumentException(); // nicht werfen, um dann direkt wieder zu fangen
}
System.out.printf("First Argument: %s%n", args[0]);
} catch (IllegalArgumentException) {
System.err.println("Error: " + exception.getMessage());
}
}
}
Positivbeispiel
public class Example {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println(String.format("Expected one argument. Got %d", args.length));
return;
}
int number;
try{
number = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
Wenn du diese Seite interessant fandest, findest du hier noch mehr Seite(n) dazu:
Assertions, Fehlermeldungen