Voici une comparaison claire entre exception surveillée (checked) et non surveillée
(unchecked) en Java 👇
Critère
Définition
Héritage
Obligation
Moment
d’apparition
Exemples
Exception surveillée
(Checked)
Exception vérifiée par le
compilateur
Hérite de Exception (hors
RuntimeException)
Doit être gérée (try-catch)
ou déclarée (throws)
Souvent liée à des problèmes
externes
IOException, SQLException,
ClassNotFoundException
Exception non surveillée (Unchecked)
Exception non vérifiée par le
compilateur
Hérite de RuntimeException
Aucune obligation de gestion
Souvent liée à des erreurs de
programmation
NullPointerException,
ArithmeticException,
ArrayIndexOutOfBoundsException
Objectif
Forcer le développeur à
prévoir l’erreur
Signaler un bug dans le code
Exemple rapide
Exception surveillée
FileReader fr = new FileReader("f.txt"); // IOException → obligatoire
Exception non surveillée
int x = 10 / 0; // ArithmeticException → pas obligatoire
� Astuce examen :
✔ Exceptions surveillées = problèmes prévisibles
❌ Exceptions non surveillées = erreurs de logique
Exceptions surveillées : erreurs prévisibles et récupérables
Les exceptions surveillées représentent des problèmes que le programmeur peut anticiper et
gérer correctement.
👉 Exemples :



un fichier peut ne pas exister
une base de données peut être indisponible
une connexion réseau peut échouer
💡 Java force le développeur à y penser, pour éviter un programme qui plante bêtement.
1
2. Exceptions non surveillées : erreurs de programmation
Les exceptions non surveillées sont souvent dues à des bugs ou à une mauvaise logique du
code.
👉 Exemples :



NullPointerException → objet jamais initialisé
ArrayIndexOutOfBoundsException → indice invalide
NumberFormatException → mauvaise entrée utilisateur
💡 Les forcer à être capturées rendrait le code :



plus lourd
plus illisible
et ne corrigerait pas le vrai problème
2