Exceptions werfen

Datentypen und Exceptions in Java

Jim White

Java Developer

Handling-Optionen

  • Geprüfte Exceptions erfordern „Handling"
    • „Handling" von Runtime-Exceptions ist optional
  • Zwei Optionen zum „Handling"
    • Mit try/catch die Exception abfangen und den Fehler beheben
    • Die Exception „werfen"
  • Try/catch ist der bevorzugte Weg zum Behandeln einer Exception
    • Nicht immer möglich; manchmal ist zentrales Handling besser
Datentypen und Exceptions in Java

Schlüsselwort throws

  • Mit throws an einer Methode die Exception an den Aufrufer zurückgeben
    • Statt die Exception in der Methode zu behandeln
    • Heißt „Exception werfen" oder „den Ball weiterspielen"
    • Verantwortung für das Handling an den Caller übergeben
  • Nach throws eine kommagetrennte Liste von Exception-Typen verwenden
    • Zeigt, welche Exceptions der Aufrufer erwarten sollte
public static void someMethod() throws IndexOutOfBoundsException, 
NegativeArraySizeException, NullPointerException {
  // method code
}
Datentypen und Exceptions in Java
Throws-Beispiel

Normales try/catch zum Behandeln einer Exception

public static void main(String[] args) {
  someMethod();
}
public static void someMethod(){
  try {
    ArrayList<String> games
      = new ArrayList<String>();
    games.add("Monopoly");
    games.add("Chess");
    games.get(3);
  } catch (IndexOutOfBoundsException e) {
    System.out.println(
   "Ups – versucht, ein nicht existentes Element zu holen");
  }
}

Throws zum Behandeln einer Exception

public static void main(String[] args) {
  try {
    someMethod();
  } catch (IndexOutOfBoundsException e) {
    System.out.println(
   "someMethod hat versucht, ein nicht existentes Element zu holen");
  }
}
public static void someMethod()
      throws IndexOutOfBoundsException {
  ArrayList<String> games
    = new ArrayList<String>();
  games.add("Monopoly");
  games.add("Chess");
  games.get(3);
}
Datentypen und Exceptions in Java

Wann `throws` verwenden

  • „Den Ball weiterspielen" bzw. eine Exception werfen, vermeiden wir möglichst
    • Besser ist meist, Exceptions dort per try/catch zu behandeln, wo sie auftreten
  • Gründe fürs Werfen statt try/catch:
    • Die Methode weiß evtl. nicht, wie sie sich erholen kann
    • Zentrales Handling reduziert doppelten try/catch-Code

Eine Exception zu werfen wird typischerweise mit benutzerdefinierten Exceptions verwendet

1 Photo from https://unsplash.com/@philipparosetite
Datentypen und Exceptions in Java

Catch und Rethrow

  • Eine Exception kann „erneut geworfen" werden
    • Eine aufrufende Methode verwendet auch throws statt try/catch
  • Erneut aus main zu werfen, beendet die Anwendung

Exceptions können an aufrufende Methoden erneut geworfen werden

Datentypen und Exceptions in Java

Beispiel: Rethrow

public class RethrowExample {
    public static void main(String[] args) {
        try {
            method1(0);
        } catch (ArithmeticException e) {
            System.out.println("Oops - tried a bad quotient");
        }
    }
    public static void method1(int divisor) throws ArithmeticException {
        method2(divisor);
    }
    public static void method2 (int divisor) throws ArithmeticException {
        int z = 5/divisor;
        System.out.println(z);
    }
}
Datentypen und Exceptions in Java

Lass uns üben!

Datentypen und Exceptions in Java

Preparing Video For Download...