La gestion desexceptions
Java
Maîtrisez l'art de gérer les erreurs pour créer des applications
robustes et fiables
2.
Qu'est-ce qu'une exception?
Événement inattendu
Une exception est un événement qui interrompt le flux normal d'exécution du
programme lors de l'exécution.
Mécanisme de Java
Java utilise les exceptions pour signaler et gérer les conditions d'erreur de manière
structurée et contrôlée.
Protection du programme
Permet d'éviter les arrêts brutaux et de maintenir la stabilité de l'application face
aux erreurs.
3.
Types d'exceptions :checked vs unchecked
Exceptions vérifiées (Checked)
• Doivent être gérées obligatoirement
• Vérifiées à la compilation
• IOException, SQLException, ClassNotFoundException
• Héritent de Exception mais pas de RuntimeException
Exceptions non vérifiées (Unchecked)
• Gestion optionnelle
• Détectées à l'exécution
• NullPointerException, ArrayIndexOutOfBoundsException
• Héritent de RuntimeException
4.
La hiérarchie desclasses d'exceptions
Exception
Erreurs applicatives: vérifiées et non vérifiées
Error
Erreurs système graves
Throwable
Racine de toutes les exceptions Java
Toutes les exceptions Java héritent de la classe Throwable, qui se divise en deux branches principales : Error pour les erreurs système et Exception
5.
Le bloc try-catch-finally
01
Bloctry
Contient le code susceptible de générer une exception.
C'est la zone surveillée où les erreurs peuvent survenir.
02
Bloc catch
Capture et traite les exceptions spécifiques. Peut y avoir
plusieurs blocs catch pour différents types d'exceptions.
03
Bloc finally
S'exécute toujours, exception ou pas. Idéal pour libérer
les ressources comme fermer des fichiers ou
connexions.
try { // Code à risque int result = 10/0;} catch (ArithmeticException e) { System.out.println("Division par zéro !");} finally { // Nettoyage des ressources
System.out.println("Bloc finally exécuté");}
6.
Lancer des exceptionsavec throw et
throws
Le mot-clé throw
Permet de lancer explicitement une exception dans le code. Utilisé pour signaler une
condition d'erreur spécifique.
if (age < 0) { throw new IllegalArgumentException("Âge invalide");}
Le mot-clé throws
Déclare qu'une méthode peut lever une ou plusieurs exceptions. Informe les appelants
des exceptions possibles.
public void readFile(String filename) throws IOException { // Code de lecture}
7.
Créer ses propresexceptions
personnalisées
Créez des exceptions métier spécifiques à votre application pour une gestion d'erreurs plus
précise et professionnelle.
public class CompteInsuffisantException extends Exception { private double soldeActuel;
private double montantDemande; public CompteInsuffisantException(String message,
double solde, double montant) { super(message); this.soldeActuel =
solde; this.montantDemande = montant; } // Getters pour accéder aux détails}
Conseil : Héritez d'Exception pour les erreurs vérifiées ou de RuntimeException pour les
erreurs de programmation.
8.
Bonnes pratiques degestion d'erreurs
Spécificité des exceptions
Capturez les exceptions les plus spécifiques en premier, les générales en dernier.
Évitez de capturer Exception de manière globale.
Messages informatifs
Fournissez des messages d'erreur clairs et exploitables. Incluez le contexte et les
actions possibles pour résoudre le problème.
Libération des ressources
Utilisez try-with-resources ou finally pour garantir la fermeture des ressources.
Évitez les fuites mémoire.
Logging approprié
Loggez les exceptions avec le niveau approprié. Stack traces complètes pour le
debug, messages utilisateur pour l'info.
9.
Exemples pratiques etcas d'usage courants
Lecture de fichiers
Gestion des IOException
lors de l'accès aux fichiers.
Utilisation de try-with-
resources pour fermer
automatiquement les flux.
Accès base de données
Capture des SQLException
lors des opérations JDBC.
Gestion des timeouts et
des erreurs de connexion
réseau.
Appels API réseau
Traitement des timeouts,
erreurs HTTP et problèmes
de sérialisation JSON. Retry
pattern pour la résilience.
Validation métier
Exceptions personnalisées
pour valider les règles
business. Messages
d'erreur orientés
utilisateur final.
10.
Récapitulatif et conseilspour un code robuste
Gestion proactive
Anticipez les erreurs possibles et gérez-
les explicitement. Un code défensif évite
les surprises en production.
Hiérarchie claire
Comprenez la hiérarchie des exceptions
pour capturer au bon niveau. Checked
vs unchecked selon le contexte.
Documentation complète
Documentez les exceptions possibles
dans vos méthodes. Facilitez la
maintenance et l'utilisation par d'autres
développeurs.
"Une application robuste n'est pas celle qui ne tombe jamais en panne, mais celle qui gère élégamment ses erreurs et continue de
fonctionner."