Capturando exceções de subclasses
Java para Iniciantes (Oracle)
Posted on October 19, 2024
Captura de exceções de subclasses:
- Exceções de subclasses são capturadas pela cláusula catch de uma superclasse.
Exemplo: A superclasse de todas as exceções é Throwable. Se Throwable for capturado, todas as suas subclasses também serão tratadas.
Ordem das instruções catch:
A cláusula catch de uma subclasse deve sempre preceder a da superclasse.
Caso contrário, a superclasse capturaria todas as exceções, inclusive as da subclasse, tornando o código da subclasse inalcançável, o que é um erro em Java.
Exemplo de código com exceções de subclasses:
O exemplo a seguir captura exceções do tipo ArrayIndexOutOfBoundsException (subclasse) e Throwable (superclasse).
Exemplo de código:
// Subclasses devem preceder as superclasses em instruções catch.
class ExcDemo5 {
public static void main(String args[]) {
// O array numer é mais longo que denom.
int numer[] = { 4, 8, 16, 32, 64, 128, 256, 512 };
int denom[] = { 2, 0, 4, 4, 0, 8 };
for (int i = 0; i < numer.length; i++) {
try {
// Tenta realizar a divisão
System.out.println(numer[i] + " / " + denom[i] + " is " + numer[i] / denom[i]);
} catch (ArrayIndexOutOfBoundsException exc) {
// Captura exceção de acesso fora dos limites do array
System.out.println("No matching element found.");
} catch (Throwable exc) {
// Captura qualquer outra exceção
System.out.println("Some exception occurred.");
}
}
}
}
Esse caso, catch(Throwable) captura todas as exceções exceto ArrayIndexOutOfBoundsException. O problema da captura de exceções de subclasses passa a ser mais importante quando nós mesmos criamos as exceções.
Saída do programa:
O programa exibe o resultado das divisões corretas.
Quando ocorre uma exceção fora dos limites do array, ela é tratada pela cláusula catch correspondente.
Exceções não capturadas por ArrayIndexOutOfBoundsException são capturadas pela superclasse Throwable.
Exemplo de saída:
4 / 2 is 2
Some exception occurred.
16 / 4 is 4
32 / 4 is 8
Some exception occurred.
128 / 8 is 16
No matching element found.
No matching element found.
Regra importante:
Subclasses devem sempre preceder superclasses na ordem dos blocos catch para evitar que o código da subclasse seja inalcançável.
Conclusão:
Ao tratar exceções, certifique-se de ordenar os blocos catch de maneira correta, colocando as exceções de subclasses antes das superclasses. Isso garante que o tratamento seja feito de forma apropriada e evita erros de código inalcançável em Java.
Posted on October 19, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.