58. Exceptions werfen (throw)

Objekte vom Typ Throwable (genauer: Exception) können ‘geworfen’ werden.

Unchecked Exceptions

throw new NullPointException();

Die Ausnahmebehandlung erfolgt in der Methode, welche diese aufgerufen hat (oder wird noch weiter gereicht).

Checked Exceptions

Da die Ausnahme zwingend behandelt werden muss, muss die Methode angeben, ob und was sie ‘wirft’, damit in der aufrufenden Methode entsprechend reagiert werden kann.

static void checked() throws FileNotFoundException{
    try {
        FileReader f = new FileReader(new File("C:/xxx"));
    } catch (FileNotFoundException e) {
        throw e;
}

Der Typ der geworfenen Ausnahme sollte möglichst genau bezeichnet werden, damit korrekt reagiert werden kann. Kürzer:

static void checked() throws FileNotFoundException{
    FileReader f = new FileReader(new File("C:/xxx"));
    throw new FileNotFoundException();
}

Mehrere Exceptions werfen:

static void checked() throws FileNotFoundException, SomeOtherException {}

Möglichkeiten:

  1. Nichts tun (nur bei unchecked exceptions) -> exception wird an überstehende Methode geleitet.

  2. Weiterwerfen (unchecked & checked) -> exception muss in der überstehenden Methode abgefangen oder weitergeleitet werden.

  3. Abfangen mit try-catch.

Es können eigene Exceptions erzeugt werden, die über die vorhandene Bibliothek hinaus gehen Konstruktoren, welche Exceptions erzeugen sollten dazu implementiert werden:

  • Exception()

  • Exception(String message) (-> Zugriff mit getMessage)

  • Exception(String message, Throwable cause)

Überlegen, welche Kategorie: checked (kein Programmierfehler, sondern erwarteter Fehler z.B. Nutzereingabe) oder unchecked (erbt von RuntimeException).