Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Múltiplos Blocos Catch | Seção
Practice
Projects
Quizzes & Challenges
Questionários
Challenges
/
Tratamento de Exceções em Java

bookMú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

Main.java

copy
12345678910111213141516
package 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.

question mark

Por que a ordem dos blocos catch é importante ao tratar exceções em Java?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 5
some-alt