Was bringt sich throws im Methodenkopf und welche Funktion hat das (Java)?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

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.

Woher ich das weiß:Berufserfahrung – Java-Entwickler von Batch- und Webanwendungen
LukasErdi 
Fragesteller
 17.11.2021, 14:42

Danke!

0

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.