Java-Ausnahmen - Try...Catch


Java-Ausnahmen

Beim Ausführen von Java-Code können verschiedene Fehler auftreten: Codierungsfehler des Programmierers, Fehler durch falsche Eingaben oder andere unvorhersehbare Dinge.

Wenn ein Fehler auftritt, stoppt Java normalerweise und generiert eine Fehlermeldung. Der Fachbegriff dafür lautet: Java will throw an exception (throw an error).


Java versuchen und fangen

Mit der tryAnweisung können Sie einen Codeblock definieren, der während der Ausführung auf Fehler getestet werden soll.

Mit der catchAnweisung können Sie einen Codeblock definieren, der ausgeführt wird, wenn im try-Block ein Fehler auftritt.

Die Schlüsselwörter tryund catchkommen paarweise vor:

Syntax

try {
  //  Block of code to try
}
catch(Exception e) {
  //  Block of code to handle errors
}

Betrachten Sie das folgende Beispiel:

Dies erzeugt einen Fehler, da myNumbers[10] nicht existiert.

public class Main {
  public static void main(String[ ] args) {
    int[] myNumbers = {1, 2, 3};
    System.out.println(myNumbers[10]); // error!
  }
}

Die Ausgabe wird in etwa so aussehen:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at Main.main(Main.java:4)

Wenn ein Fehler auftritt, können wir try...catchden Fehler abfangen und Code ausführen, um ihn zu behandeln:

Beispiel

public class Main {
  public static void main(String[ ] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    }
  }
}

Die Ausgabe wird sein:

Something went wrong.

Endlich

Mit der finallyAnweisung können Sie Code nach ausführen try...catch, unabhängig vom Ergebnis:

Beispiel

public class Main {
  public static void main(String[] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    } finally {
      System.out.println("The 'try catch' is finished.");
    }
  }
}

Die Ausgabe wird sein:

Something went wrong.
The 'try catch' is finished.


Das Throw-Schlüsselwort

Mit der throwAnweisung können Sie einen benutzerdefinierten Fehler erstellen.

Die throwAnweisung wird zusammen mit einem Ausnahmetyp verwendet . In Java sind viele Ausnahmetypen verfügbar: ArithmeticException, FileNotFoundException, ArrayIndexOutOfBoundsException, SecurityException, usw.:

Beispiel

Lösen Sie eine Ausnahme aus, wenn das Alter unter 18 ist (geben Sie „Zugriff verweigert“ aus). Wenn das Alter 18 Jahre oder älter ist, drucken Sie „Zugang gewährt“ aus:

public class Main {
  static void checkAge(int age) {
    if (age < 18) {
      throw new ArithmeticException("Access denied - You must be at least 18 years old.");
    }
    else {
      System.out.println("Access granted - You are old enough!");
    }
  }

  public static void main(String[] args) {
    checkAge(15); // Set age to 15 (which is below 18...)
  }
}

Die Ausgabe wird sein:

Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
        at Main.checkAge(Main.java:4)
        at Main.main(Main.java:12)

Wenn das Alter 20 Jahre beträgt, erhalten Sie keine Ausnahme:

Beispiel

checkAge(20);

Die Ausgabe wird sein:

Access granted - You are old enough!

Testen Sie sich mit Übungen

Übung:

Fügen Sie die fehlenden Teile ein, um den Fehler im folgenden Code zu behandeln.

 {
  int[] myNumbers = {1, 2, 3};
  System.out.println(myNumbers[10]);
}  (Exception e) {
  System.out.println("Something went wrong.");
}