Retour au cours

Gestion des erreurs : Introduction aux Exceptions (Checked vs Unchecked)

Maîtrise de Java : De Zéro à Développeur Professionnel (Un parcours en 50 leçons)

Leçon 33 : Gestion des erreurs : Introduction aux Exceptions

Une exception est un événement qui se produit pendant l'exécution d'un programme et qui perturbe le flux normal des instructions. Java fournit un mécanisme robuste pour gérer ces erreurs.

La hiérarchie des Exceptions

Toutes les exceptions et erreurs sont des sous-classes de la classe Throwable.

  1. Error : Représente des problèmes graves (ex: OutOfMemoryError, StackOverflowError). Ceux-ci sont généralement irrécupérables et ne devraient pas être interceptés par l'application.
  2. Exception : Représente des conditions qu'une application pourrait vouloir intercepter et gérer.

Exceptions Checked vs Unchecked

Les exceptions Java sont classées en deux types, selon que le compilateur vous force ou non à les gérer.

1. Checked Exceptions (Exceptions vérifiées)

  • Le compilateur vous oblige soit à les gérer (en utilisant try-catch), soit à les déclarer (en utilisant throws).
  • Elles représentent généralement des problèmes externes qui sont récupérables (ex: fichier non trouvé, problèmes de réseau).
  • Exemples : IOException, SQLException, FileNotFoundException.

2. Unchecked Exceptions (Exceptions non vérifiées / Runtime Exceptions)

  • Le compilateur ne vous force pas à les gérer.
  • Elles résultent généralement d'erreurs de programmation ou de failles logiques (ex: tentative d'accès à un index invalide).
  • Ce sont des sous-classes de RuntimeException.
  • Exemples : NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException.

java // Exemple d'une exception unchecked (erreur de programmation) int result = 10 / 0; // ArithmeticException

// Exemple d'une exception checked (nécessite une gestion/déclaration) // Thread.sleep(1000); // Erreur de compilation sans try/catch ou throws

Objectif de la gestion des exceptions : Gérer gracieusement les situations inattendues, éviter les plantages de l'application et fournir un retour d'information significatif.