cybercursus

Gérer les exceptions

15 min · Intermédiaire · 3 octobre 2026

Sommaire
  1. Intercepter une exception
  2. Lever ses propres exceptions
  3. Exceptions vérifiées et non vérifiées
  4. Le bloc finally
  5. À toi de jouer

Intercepter une exception

java
try {
  int resultat = 10 / 0;
  System.out.println(resultat);
} catch (ArithmeticException e) {
  System.out.println("Erreur : " + e.getMessage());
}
System.out.println("Le programme continue normalement");

Sans try/catch, une exception non interceptée arrête l’exécution du programme à cet endroit précis (ou plus exactement, elle remonte la pile d’appels jusqu’à trouver un gestionnaire, sinon le programme se termine).

Lever ses propres exceptions

java
public static double diviser(double a, double b) {
  if (b == 0) {
      throw new IllegalArgumentException("Division par zero impossible");
  }
  return a / b;
}

try {
  System.out.println(diviser(10, 0));
} catch (IllegalArgumentException e) {
  System.out.println("Erreur : " + e.getMessage());
}

Info

throw new IllegalArgumentException("message") crée et lève une exception en une seule instruction. Le catch le plus proche capable de la traiter l’interceptera.

Exceptions vérifiées et non vérifiées

java
// Exception verifiee (checked) : doit etre geree ou declaree
public static void lireFichier(String chemin) throws java.io.IOException {
  // ... code qui peut lever IOException
}

// Exception non verifiee (unchecked) : aucune obligation
public static int diviserEntiers(int a, int b) {
  return a / b; // peut lever ArithmeticException, sans obligation de la declarer
}

Les exceptions vérifiées héritent de Exception (hors RuntimeException), les non vérifiées héritent de RuntimeException. Le compilateur impose une gestion explicite seulement pour les premières.

Le bloc finally

java
try {
  System.out.println("Tentative...");
  throw new RuntimeException("Erreur");
} catch (RuntimeException e) {
  System.out.println("Interceptee : " + e.getMessage());
} finally {
  System.out.println("Toujours execute, erreur ou non");
}

Le bloc finally s’exécute toujours, qu’une exception ait été levée et interceptée ou non, souvent utilisé pour libérer des ressources (fermer un fichier, une connexion).

À toi de jouer

java
public static int diviserEnSecurite(int a, int b) {
  try {
      return a / b;
  } catch (ArithmeticException e) {
      return -1;
  }
}

System.out.println(diviserEnSecurite(10, 0));
Que produit ce code à l'exécution ?
Que se passe-t-il si une exception est levée dans un bloc try qui a un catch correspondant à son type ?
Quelle est la différence entre une exception vérifiée (checked, comme IOException) et une exception non vérifiée (unchecked, comme NullPointerException) en Java ?

Pour aller plus loin

Commentaires

Recherche