CodeGym /Blogue Java /Random-PT /Java captura várias exceções
John Squirrels
Nível 41
San Francisco

Java captura várias exceções

Publicado no grupo Random-PT
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----

Conclusão

Esta foi uma rápida visão geral do uso do bloco java catch multiple Exceptions. Como desafio, tente imprimir a exceção pai e filho no mesmo bloco. Você é encorajado a aprender e praticar para crescer. Abraço e bom aprendizado!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION