Was bringt sich throws im Methodenkopf und welche Funktion hat das (Java)?
Also mir ist unklar was das bringt, weil ich kann auch ohne throws Exception im Methodenkopf im try-catch eine neu Exception werfen.
Danke
3 Antworten
Beispiel:
public static void addName(String name) throws IllegalArgumentException {
if (name.equals("Hans") {
throw new IllegalArgumentException("Hans darf nicht mit rein!");
}
names.add(name);
}
public static void main(String[] args) {
try {
addName("Peter");
addName("Hans");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage()); // Weiss grad nicht mehr, obs wirklich getMessage war.
}
}
Diese Methode kann eine IllegalArgumentException werfen, wenn ich einen Hans hinzufügen möchte. Das throws fordert nun, dass diese Exception aufgefangen wird, wenn ich sie aufrufe. So kann ich etwas anderes ausführen, wenn ich versuche einen Hans hinzuzufügen.
Das bringt, dass man innerhalb der Methode eben keinen Try - Catch Block braucht.
Man verlagert das Fehler-Handling eine Ebene nach oben.
Bei deinem simplen Beispiel ist das natürlich irrelevant, da du ja keine Untermethode aufrufst, die Fehler-Handling erfordert.
Der Compiler bzw. die IDE kann das Exception-Handling kontrollieren.
Wenn eine Methode diese Exception an der Methoden-Definition nicht hat, eine aufgerufene Methode aber schon, dann muss ein Fehler-Handling eingebaut werden.