Exceptions Kontrollfluss: Unterschied zwischen den Versionen
K (Ubsih verschob die Seite Exceptions nach Exceptions Kontrollfluss: Differenzierung zwischen Kontrollfluss und parseInt) |
Keine Bearbeitungszusammenfassung |
||
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
|baustelle=Ja | |baustelle=Ja | ||
|blatt=3 | |blatt=3 | ||
|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 [[Große Try-Catch Blöcke|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.''' | |||
|schweregrad=leicht | |schweregrad=leicht | ||
|negativ=<syntaxhighlight lang="Java"> | |||
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()); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
|positiv=<syntaxhighlight lang="Java"> | |||
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()); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
|kategorie=Java Grundlagen, Objektorientierung | |kategorie=Java Grundlagen, Objektorientierung | ||
|weiterlesen=Ja | |weiterlesen=Ja | ||
|seite=Assertions, Fehlermeldungen | |seite=Assertions, Fehlermeldungen | ||
}} | }} |
Aktuelle Version vom 28. Oktober 2024, 17:52 Uhr
🚧 | 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