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