Geprüfte und ungeprüfte Ausnahmen in Java
In diesem Tutorial wird eingeführt, was geprüfte und nicht geprüfte Ausnahmen in Java sind.
In Java ist eine Ausnahme eine Situation, die während der Codeausführung auftritt und die Ausführung abnormal beendet. Diese Ausnahme kann entweder zur Kompilierzeit oder zur Laufzeit auftreten. Java kategorisiert die Ausnahme im Großen und Ganzen in zwei Typen, geprüft und ungeprüft. Eine Ausnahme, die vom Compiler zur Kompilierzeit geprüft wird, wird als geprüfte Ausnahme bezeichnet. Währenddessen wird eine zur Laufzeit geprüfte Ausnahme als ungeprüfte Ausnahme bezeichnet.
Um mit Ausnahmen umzugehen, stellt Java Klassen für jede Ausnahme bereit, wie zum Beispiel NullPointerException
, ArrayIndexOutofBoundsException
, IOException
usw. Die Klasse Exception
steht an der Spitze aller Ausnahmeklassen, und alles, was eine Unterklasse von Exception
ist, mit Ausnahme von RuntimeException
und seinen Unterklassen ist eine geprüfte Ausnahme.
Ausnahmeklassen, die die RuntimeException
erben, wie ArithmeticException
, NullPointerException
und ArrayIndexOutOfBoundsException
werden als ungeprüfte Ausnahmen bezeichnet. Diese werden zur Laufzeit überprüft.
Geprüfte Ausnahmen in Java
Lassen Sie uns zunächst verstehen, was eine Ausnahme ist und wie sie sich auf die Codeausführung auswirkt. In diesem Beispiel schreiben wir Daten in eine Datei, und dieser Code ist anfällig für Ausnahmen wie FileNotFoundException
, IOException
usw. Wir haben keinen Catch-Handler bereitgestellt, und da es sich um geprüfte Ausnahmen handelt, tut der Java-Compiler dies kompiliert den Code nicht und löst die Ausnahmen zur Kompilierzeit aus. Siehe das Beispiel unten.
import java.io.FileOutputStream;
public class SimpleTesting {
public static void main(String[] args) {
FileOutputStream fout =
new FileOutputStream("/home/root/eclipse-workspace/java-project/myfile.txt");
fout.write(1256);
fout.close();
System.out.println("Data written successfully");
}
}
Ausgabe:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Unhandled exception type FileNotFoundException
Unhandled exception type IOException
Unhandled exception type IOException
at SimpleTesting.main(SimpleTesting.java:8)
Um eine abnormale Beendigung des Codes zu vermeiden, müssen wir einen Catch-Handler für den Code bereitstellen. Unten ist derselbe Code wie oben, aber er hat einen Catch-Handler, damit der Code nicht dazwischen beendet und ordnungsgemäß ausgeführt wird. Siehe das Beispiel unten.
import java.io.FileOutputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
FileOutputStream fout =
new FileOutputStream("/home/irfan/eclipse-workspace/ddddd/myfile.txt");
fout.write(1256);
fout.close();
System.out.println("Data written successfully");
} catch (Exception e) {
System.out.println(e);
}
}
}
Ausgabe:
Data written successfully
Ungeprüfte Ausnahme in Java
Der folgende Code löst ArrayIndexOutOfBoundsException
aus, was eine ungeprüfte Ausnahme ist. Dieser Code wird erfolgreich kompiliert, aber nicht ausgeführt, da wir auf Elemente außerhalb des Bereichs des Arrays zugreifen; daher löst Code eine Laufzeitausnahme aus. Siehe das Beispiel unten.
public class SimpleTesting {
public static void main(String[] args) {
int[] arr = {3, 5, 4, 2, 3};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println(arr[23]);
}
}
Ausgabe:
3
5
4
2
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 23 out of bounds for length 5
at SimpleTesting.main(SimpleTesting.java:9)
Verwandter Artikel - Java Exception
- Ausnahme bei ungültiger Eingabe in Java
- Ausnahme im Hauptthread Java.Util.NoSuchElementException: Keine Zeile gefunden
- Ausnahme im Thread AWT-EventQueue-0 java.lang.NullPointerException
- Beheben Sie die Java.Net.BindException: Adresse wird bereits verwendet: Bind
- Der Java-Gateway-Prozess wurde beendet, bevor seine Portnummer gesendet wurde
- Java Throwable vs. Ausnahmeklasse