Antes de aprender a capturar várias exceções, você precisa estar familiarizado com o tratamento básico de exceções em Java. Avançando, presumimos que você esteja familiarizado com um bloco try and catch em Java.
Por que precisamos de vários blocos catch em Java?
Múltiplos blocos catch em Java são usados para lidar com diferentes tipos de exceções. Antes do lançamento do Java 7, precisávamos de um bloco catch específico para capturar uma exceção específica. Isso criou blocos de código redundante e, portanto, resultou em uma abordagem ineficiente. Dê uma olhada no exemplo a seguir para testemunhar as exceções capturadas. Ele usa blocos catch separados para diferentes tipos de exceções.Exemplo usando blocos catch separados
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----");
}
}
Saída
O total de cores em um espectro é: [7, 6, 5, 4, 3, 2, 1] Exceção encontrada java.lang.ArithmeticException: / por zero ----O restante do código é executado aqui----
Como você pode ver, no exemplo acima, um bloco diferente é executado quando uma exceção é lançada. Existe uma maneira mais eficiente de capturar várias exceções usando o mesmo bloco de código para capturar exceções de diferentes tipos. Dê uma olhada no exemplo a seguir.
Exemplo usando Multiple Catch Block em 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----");
}
}
Saída
Você pode descomentar a linha 13 para imprimir a exceção de outro tipo.
O total de cores em um espectro é: [7, 6, 5, 4, 3, 2, 1] Exceção encontrada java.lang.ArithmeticException: / por zero ----O restante do código é executado aqui----
GO TO FULL VERSION