Avant d'apprendre à intercepter plusieurs exceptions, vous devez vous familiariser avec la gestion des exceptions de base en Java. À l'avenir, nous supposons que vous êtes familiarisé avec un bloc try and catch en Java.
Pourquoi avons-nous besoin de plusieurs blocs catch en Java ?
Plusieurs blocs catch en Java sont utilisés pour gérer différents types d'exceptions. Avant le lancement de Java 7, nous avions besoin d'un bloc catch spécifique pour intercepter une exception spécifique. Cela a créé des blocs de code redondants et a donc abouti à une approche inefficace. Jetez un oeil à l'exemple suivant pour voir les exceptions interceptées. Il utilise des blocs catch séparés pour différents types d'exceptions.Exemple utilisant des blocs catch séparés
import java.util.Arrays;
public class ExceptionHandler {
public static void main(String[] args) {
Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1, 0 };
try {
System.out.println("Total number of options on a dice are: " + Arrays.toString(colorsOfASpectrum));
// un-comment the following line to see "Index Out of Bounds Exception"
// colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception
} catch (ArrayIndexOutOfBoundsException e) {
// This catch block executes in case of "Index Out of Bounds Exception"
System.out.println("Array Index Out Of Bounds Exception " + e);
} catch (ArithmeticException e) {
// This catch block executes in case of "Arithmetic Exception"
System.out.println("Arithmetic Exception " + e);
}
System.out.println("\n----Rest of the code executes here----");
}
}
Sortir
Le nombre total de couleurs sur un spectre est : [7, 6, 5, 4, 3, 2, 1]
Exception rencontrée java.lang.ArithmeticException : / par zéro
----Le reste du code s'exécute ici----
Comme vous pouvez le voir, dans l'exemple ci-dessus, un bloc différent est exécuté lorsqu'une exception est levée. Il existe un moyen plus efficace d'intercepter plusieurs exceptions en utilisant le même bloc de code pour intercepter des exceptions de différents types. Jetez un oeil à l'exemple suivant.
Exemple utilisant plusieurs blocs de capture en Java
import java.util.Arrays;
public class MultiExceptionHandler {
public static void main(String[] args) {
Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1 };
try {
System.out.println("Total colors on a spectrum are: " + Arrays.toString(colorsOfASpectrum));
// colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
// We don't need two different catch blocks for different kinds of exceptions
// Both exceptions will be handled using this multiple catch block
System.out.println("Exception Encountered " + e);
}
System.out.println("\n----Rest of the code executes here----");
}
}
Sortir
Vous pouvez décommenter la ligne 13 pour imprimer l'exception d'un autre type.Le nombre total de couleurs sur un spectre est : [7, 6, 5, 4, 3, 2, 1]
Exception rencontrée java.lang.ArithmeticException : / par zéro
----Le reste du code s'exécute ici----
GO TO FULL VERSION