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)