Retour au cours

Blocs Try-Catch-Finally et Exceptions personnalisées

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

Leçon 34 : Blocs Try-Catch-Finally et Exceptions personnalisées

1. Le mécanisme try-catch-finally

Le bloc try

Contient le code qui pourrait lever une exception.

Le bloc catch

Exécuté si une exception du type spécifié se produit dans le bloc try. Il contient la logique de récupération ou de rapport d'erreur.

Le bloc finally

S'exécute toujours, qu'une exception ait été levée ou non, capturée ou non. Souvent utilisé pour les tâches de nettoyage (ex: fermeture des flux de fichiers).

java public void divide(int numerator, int denominator) { try { // Code qui pourrait échouer int result = numerator / denominator; System.out.println("Résultat : " + result); } catch (ArithmeticException e) { // Gérer l'erreur gracieusement System.err.println("Erreur : Impossible de diviser par zéro. Message : " + e.getMessage()); } finally { // Le code de nettoyage s'exécute à chaque fois System.out.println("Tentative de division terminée."); } }

Capturer plusieurs exceptions (Multi-catch)

Depuis Java 7, vous pouvez capturer plusieurs types d'exceptions dans un seul bloc catch si la logique de gestion est identique.

java catch (IOException | SQLException e) { System.err.println("Une erreur IO/SQL liée s'est produite."); }

2. Création d'exceptions personnalisées

Si les exceptions Java intégrées ne décrivent pas précisément l'erreur, vous pouvez définir les vôtres.

  • Pour créer une Checked Exception, étendez Exception.
  • Pour créer une Unchecked Exception, étendez RuntimeException.

java public class InsufficientFundsException extends Exception { // Constructeur personnalisé public InsufficientFundsException(String message) { super(message); } }

// Pour la lever : // throw new InsufficientFundsException("Solde trop bas");