Geprüfte und ungeprüfte Ausnahmen in Java

Mohammad Irfan 12 Oktober 2023
  1. Geprüfte Ausnahmen in Java
  2. Ungeprüfte Ausnahme in Java
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