Múltiplos Blocos Catch
Deslize para mostrar o menu
Ao trabalhar com exceções em Java, frequentemente é necessário lidar com diferentes tipos de erros que podem ocorrer no código. Blocos múltiplos de catch permitem responder separadamente a vários tipos de exceções dentro de uma única estrutura try-catch. Ao posicionar diversos blocos catch após um bloco try, é possível especificar lógicas de tratamento exclusivas para cada classe de exceção. Essa abordagem torna o código mais robusto, pois permite tratar problemas específicos, como erros de entrada, falhas aritméticas ou referências nulas de maneira diferenciada, conforme a situação.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
A ordem dos blocos catch é fundamental porque o Java verifica cada bloco catch em sequência, de cima para baixo, para encontrar um tipo de exceção correspondente.
Como as exceções são organizadas em uma hierarquia, um bloco catch para uma exceção superclasse (como Exception) deve sempre vir após os blocos catch de suas subclasses (como NullPointerException ou ArithmeticException).
Se um bloco catch da superclasse aparecer antes de suas subclasses, o compilador gerará um erro, pois os blocos catch das subclasses se tornariam inacessíveis. Compreender essa hierarquia garante que o programa trate as exceções da forma mais precisa possível.
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()); } } }
No programa acima, o bloco try tenta dividir 10 pelo valor no índice 3 do array numbers. No entanto, como o array possui apenas três elementos (índices 0, 1 e 2), acessar numbers[3] lançará uma ArrayIndexOutOfBoundsException.
Quando uma exceção ocorre, o Java verifica cada bloco catch em ordem. Primeiro, procura por uma ArithmeticException, depois uma ArrayIndexOutOfBoundsException e, por fim, uma exceção geral Exception. Como a exceção lançada corresponde a ArrayIndexOutOfBoundsException, apenas esse bloco catch é executado, e os outros são ignorados. Isso demonstra como o Java escolhe o bloco catch mais específico correspondente, garantindo que a exceção seja tratada adequadamente.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo