Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser la Gestion d'Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

Qu'est-ce qu'une Exception en Java ?

Exception en Java est un événement qui interrompt l'exécution des instructions du programme, perturbant le flux normal de contrôle. C'est un objet qui encapsule les informations d'erreur survenant dans une méthode et les transmet au système d'exécution. En Java, les exceptions signalent principalement différentes conditions d'erreur qui ne peuvent pas être gérées par le flux de contrôle standard.

Dans ce tutoriel, vous apprendrez :

Les erreurs en Java se divisent en deux grandes catégories :

  1. Erreurs de compilation
  2. Erreurs d'exécution

Les erreurs de compilation peuvent être subdivisées en :

Exemple d'erreur de syntaxe :

Déclarer int a; est correct, mais écrire in a; provoquera une erreur du compilateur.

Par exemple, déclarer int a; une fois, puis tenter de redéclarer int a; plus tard dans la même portée déclenchera une erreur du compilateur, qui est mise en évidence lors de la construction.

Exemple d'erreur d'exécution

Les erreurs d'exécution se manifestent sous forme d'exceptions, événements qui interrompent le flux d'exécution normal. Les exemples typiques incluent ArithmeticException, NullPointerException et la division par zéro.

Ces exceptions surviennent à cause de conditions hors du contrôle direct du développeur.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

Pourquoi Avons-Nous Besoin de la Gestion d'Exceptions ?

Considérez un programme qui accède à un serveur distant. Pendant le développement, le serveur est accessible et le code s'exécute sans problème. En production, le serveur peut être hors service, provoquant une exception lorsque le programme tente de se connecter.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

Se fier uniquement au flux naturel du code est insuffisant. Les programmes robustes anticipent les conditions exceptionnelles et récupèrent gracieusement.

Comment Gérer les Exceptions

La gestion d'exceptions est la pratique d'anticiper les conditions exceptionnelles et de fournir une logique de secours. Une stratégie courante consiste à tenter une opération primaire et, en cas d'échec, à rediriger vers une sauvegarde.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

L'utilisation de constructions if-else traditionnelles pour gérer plusieurs types d'exceptions devient rapidement ingérable :

class Connexion {
    if (serveurEstActif()) {
        // se connecter au serveur principal
    } else {
        // se connecter au serveur de secours
    }
}

Le Bloc Try-Catch

Java fournit des mécanismes intégrés pour la gestion d'exceptions. Le code qui peut lancer une exception est placé dans un bloc try, et le code de récupération correspondant est placé dans un ou plusieurs blocs catch.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

Par exemple, le bloc try peut tenter de se connecter au serveur principal, tandis que le bloc catch gère la logique de secours.

Lorsque le serveur est actif, le bloc catch est ignoré ; lorsque le serveur est hors service, une exception est lancée et le bloc catch s'exécute.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

La syntaxe pour une paire try-catch est :

try {
    // instructions qui pourraient lancer
} catch (TypeException nom) {
    // instructions de récupération
}

Exemple Pratique

Étape 1 : Copiez le code suivant dans votre IDE.

class ExceptionJava {
    public static void main(String args[]) {
        int d = 0;
        int n = 20;
        int fraction = n / d; // lancera ArithmeticException
        System.out.println("Fin du main");
    }
}

Étape 2 : Compilez et exécutez. Le programme lance une ArithmeticException et se termine à la ligne 5.

Étape 3 : Modifiez le code pour utiliser try-catch :

class ExceptionJava {
    public static void main(String args[]) {
        int d = 0;
        int n = 20;
        try {
            int fraction = n / d;
            System.out.println("Cette ligne ne sera pas exécutée");
        } catch (ArithmeticException e) {
            System.out.println("Exception capturée : " + e);
        }
        System.out.println("Fin du main");
    }
}

Étape 4 : Compilez et exécutez à nouveau. La sortie montre que l'exception est gérée gracieusement, et le programme continue jusqu'à l'instruction d'impression finale.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

L'objet ArithmeticException capturé e contient des informations détaillées qui peuvent être utilisées pour la journalisation ou la récupération.

Hiérarchie des Classes d'Exception

La hiérarchie des exceptions de Java découle de la classe Throwable, qui a deux sous-classes directes : Error et Exception. Error représente des conditions irrécupérables (ex. : OutOfMemoryError), tandis que Exception couvre les conditions qui peuvent être gérées programmatiquement.

Maîtriser la Gestion d Exceptions Java : Try-Catch, Finally et Hiérarchie des Classes Expliqués

Exemple de Try-Catch Imbriqués

Copiez le code suivant :

class ExceptionJava {
    public static void main(String args[]) {
        try {
            int d = 1;
            int n = 20;
            int fraction = n / d;
            int g[] = {1};
            g[20] = 100; // ArrayIndexOutOfBoundsException
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException capturée : " + e);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("ArrayIndexOutOfBoundsException capturée : " + e);
        }
        System.out.println("Fin du main");
    }
}

Lorsque d est 1, le code lance ArrayIndexOutOfBoundsException. Changer d à 0 déclenche ArithmeticException. Décommenter un catch (Exception e) large causerait une erreur de compilation car il masquerait des gestionnaires plus spécifiques.

Le Bloc Finally

Le bloc finally s'exécute quel que soit le fait qu'une exception se produise, le rendant idéal pour les tâches de nettoyage.

try {
    // opérations risquées
} catch (TypeException e) {
    // gestion d'erreur
} finally {
    // actions de nettoyage
}

Exemple :

class ExceptionJava {
    public static void main(String args[]) {
        try {
            int d = 0;
            int n = 20;
            int fraction = n / d;
        } catch (ArithmeticException e) {
            System.out.println("Exception capturée : " + e);
        } finally {
            System.out.println("À l'intérieur du bloc finally");
        }
    }
}

L'exécution de ce programme affiche le message du bloc finally même si une exception est lancée. Changer d à 1 élimine l'exception ; le bloc finally s'exécute toujours.

Résumé :

Java

  1. Maîtriser la gestion d'exceptions Python : try, except, else et finally expliqués
  2. Maîtriser la gestion d'exceptions Java : try, catch, finally, throw et throws expliqués
  3. Maîtriser la gestion d'exceptions Java : try, catch, finally et ressources
  4. Maîtriser la gestion multi-exceptions en Java
  5. Maîtriser la gestion d'exceptions en C++ : Exemples pratiques try, catch, throw
  6. Comprendre Java String.charAt() : Syntaxe, type de retour, exceptions et exemple pratique
  7. Maîtriser Java String.endsWith() : Comment vérifier les suffixes de chaînes avec exemples
  8. Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples
  9. Algorithme de tri par insertion en Java : exemple clair et guide pas à pas