Exceptions cochées et non cochées en Java

Mohammad Irfan 12 octobre 2023
  1. Exceptions vérifiées en Java
  2. Exception non cochée en Java
Exceptions cochées et non cochées en Java

Ce didacticiel présente les exceptions vérifiées et non vérifiées en Java.

En Java, une exception est une situation qui se produit pendant l’exécution du code et termine l’exécution de manière anormale. Cette exception peut se produire au moment de la compilation ou de l’exécution. Java catégorise largement l’exception en deux types, cochés et non cochés. L’exception, qui est vérifiée par le compilateur au moment de la compilation, est appelée exception vérifiée. Pendant ce temps, une exception qui est vérifiée au moment de l’exécution est appelée une exception non vérifiée.

Pour gérer les exceptions, Java fournit des classes pour chaque exception telles que NullPointerException, ArrayIndexOutofBoundsException, IOException, etc. La classe Exception est au-dessus de toutes les classes d’exception et de tout ce qui est une sous-classe de Exception à l’exception de RuntimeException et de ses sous-classes est une exception vérifiée.

Les classes d’exception qui héritent de RuntimeException telles que ArithmeticException, NullPointerException et ArrayIndexOutOfBoundsException sont appelées exceptions non vérifiées. Ceux-ci sont vérifiés au moment de l’exécution.

Exceptions vérifiées en Java

Commençons par comprendre ce qu’est une exception et comment elle affecte l’exécution du code. Dans cet exemple, nous écrivons des données dans un fichier et ce code est sujet à des exceptions telles que FileNotFoundException, IOException, etc. Nous n’avons fourni aucun gestionnaire de capture, et comme ce sont des exceptions vérifiées, le compilateur Java ne pas compiler le code et lève les exceptions au moment de la compilation. Voir l’exemple ci-dessous.

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");
  }
}

Production :

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)

Pour éviter toute terminaison anormale du code, nous devons fournir un gestionnaire de capture au code. Vous trouverez ci-dessous le même code que ci-dessus, mais il dispose d’un gestionnaire de capture afin que le code ne se termine pas entre les deux et s’exécute correctement. Voir l’exemple ci-dessous.

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);
    }
  }
}

Production :

Data written successfully

Exception non cochée en Java

Le code ci-dessous lève ArrayIndexOutOfBoundsException, qui est une exception non vérifiée. Ce code se compile avec succès mais ne s’exécute pas car nous accédons à des éléments hors de la plage du tableau ; par conséquent, le code lève une exception d’exécution. Voir l’exemple ci-dessous.

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]);
  }
}

Production :

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)

Article connexe - Java Exception