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 try
Anweisung können Sie einen Codeblock definieren, der während der Ausführung auf Fehler getestet werden soll.
Mit der catch
Anweisung können Sie einen Codeblock definieren, der ausgeführt wird, wenn im try-Block ein Fehler auftritt.
Die Schlüsselwörter try
und catch
kommen 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...catch
den 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 finally
Anweisung 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 throw
Anweisung können Sie einen benutzerdefinierten Fehler erstellen.
Die throw
Anweisung 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!