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");