Gestion des erreurs en Java : try/catch et bien plus — guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à la gestion des erreurs en Java



Dans le monde de la programmation, les erreurs sont inévitables. Elles surviennent pour diverses raisons : saisie incorrecte de l'utilisateur, fichier inaccessible, erreurs dans la logique du programme ou pannes réseau. En langage Java, il existe un mécanisme puissant et flexible pour gérer ces situations : les exceptions. Une gestion correcte des erreurs n'est pas seulement une bonne pratique, c'est la clé de la stabilité, de la fiabilité et de la sécurité de votre application.



Dans cet article, nous allons détailler le fonctionnement de la gestion des erreurs en Java, en commençant par la structure de base try/catch et en terminant par des techniques avancées comme try-with-resources et la création d'exceptions personnalisées. Vous apprendrez la différence entre les exceptions vérifiées (checked) et non vérifiées (unchecked), et comment les utiliser correctement.



Les bases : la structure try/catch et finally



Bloc try et catch



Le cœur de la gestion des exceptions en Java est la structure try/catch. Le code qui peut lever une exception est placé dans le bloc try. Si une exception se produit dans ce bloc, l'exécution passe immédiatement au bloc catch correspondant, où cette exception est traitée.



public class Main {    public static void main(String[] args) {        try {            int result = 10 / 0; // Cela provoquera une ArithmeticException            System.out.println("Résultat : " + result);        } catch (ArithmeticException e) {            System.out.println("Erreur : division par zéro !");            e.printStackTrace(); // Affiche la pile d'appels pour le débogage        }        System.out.println("Le programme continue...");    }}


Notez que la ligne System.out.println("Résultat : " + result); ne sera pas exécutée, car l'exception s'est produite plus tôt. Cependant, le programme ne "plante" pas — le contrôle passe au catch, et l'exécution se poursuit après le bloc try/catch.



Plusieurs blocs catch



Un seul bloc try peut avoir plusieurs blocs catch pour gérer différents types d'exceptions. Il est important de se rappeler que les exceptions plus spécifiques doivent être indiquées avant les exceptions plus générales.



try {    String str = null;    System.out.println(str.length()); // NullPointerException    int[] arr = new int[5];    arr[10] = 100;                   // ArrayIndexOutOfBoundsException} catch (NullPointerException e) {    System.out.println("NullPointerException : " + e.getMessage());} catch (ArrayIndexOutOfBoundsException e) {    System.out.println("ArrayIndexOutOfBoundsException : " + e.getMessage());} catch (Exception e) { // Gestionnaire général pour toutes les autres exceptions    System.out.println("Erreur générale : " + e.getMessage());}


Bloc finally



Le bloc finally est un bloc spécial qui s'exécute toujours, qu'une exception ait été levée ou non. Il est idéal pour libérer des ressources : fermeture de fichiers, de connexions à une base de données ou de sockets.



import java.io.*;

public class FileExample { public static void main(String[] args) { FileInputStream file = null; try { file = new FileInputStream("test.txt"); int data = file.read(); System.out.println((char) data); } catch (FileNotFoundException e) { System.out.println("Fichier non trouvé !"); } catch (IOException e) { System.out.println("Erreur d'entrée-sortie !"); } finally { try { if (file != null) { file.close(); // Ferme le fichier dans tous les cas } } catch (IOException e) { System.out.println("Erreur lors de la fermeture du fichier !"); } } }}


Même si une exception est levée dans le bloc try ou catch, le bloc finally sera exécuté.

Blogs

Book Recommendations