Blocs Catch Multiples
Glissez pour afficher le menu
Lors de la gestion des exceptions en Java, il est souvent nécessaire de traiter différents types d’erreurs pouvant survenir dans votre code. Les blocs catch multiples permettent de répondre séparément à divers types d’exceptions au sein d’une seule structure try-catch. En plaçant plusieurs blocs catch après un bloc try, il est possible de spécifier une logique de traitement unique pour chaque classe d’exception. Cette approche rend le code plus robuste, car elle permet de traiter différemment des problèmes spécifiques tels que les erreurs de saisie, les erreurs arithmétiques ou les références nulles, selon la situation.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
L’ordre des blocs catch est essentiel, car Java vérifie chaque bloc catch dans l’ordre, de haut en bas, pour trouver un type d’exception correspondant.
Puisque les exceptions sont organisées selon une hiérarchie, un bloc catch pour une exception super-classe (comme Exception) doit toujours apparaître après les blocs catch de ses sous-classes (telles que NullPointerException ou ArithmeticException).
Si un bloc catch de super-classe apparaît avant ses sous-classes, le compilateur générera une erreur, car les blocs catch des sous-classes deviendraient inaccessibles. Comprendre cette hiérarchie garantit que le programme gère les exceptions de la manière la plus précise possible.
Main.java
12345678910111213141516package com.example; public class Main { public static void main(String[] args) { try { int[] numbers = {1, 2, 3}; System.out.println("Result: " + (10 / numbers[3])); } catch (ArithmeticException e) { System.out.println("ArithmeticException caught: " + e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException caught: " + e.getMessage()); } catch (Exception e) { System.out.println("General Exception caught: " + e.getMessage()); } } }
Dans le programme ci-dessus, le bloc try tente de diviser 10 par la valeur à l’indice 3 du tableau numbers. Cependant, comme le tableau ne contient que trois éléments (indices 0, 1 et 2), l’accès à numbers[3] déclenchera une ArrayIndexOutOfBoundsException.
Lorsqu’une exception se produit, Java vérifie chaque bloc catch dans l’ordre. Il recherche d’abord une ArithmeticException, puis une ArrayIndexOutOfBoundsException, et enfin une exception générale Exception. Comme l’exception levée correspond à ArrayIndexOutOfBoundsException, seul ce bloc catch s’exécute et les autres sont ignorés. Cela montre comment Java choisit le bloc catch le plus spécifique correspondant, garantissant ainsi que l’exception est traitée de manière appropriée.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion