Blocos try aninhados:
Um bloco try pode ser colocado dentro de outro bloco try.
Se uma exceção não for capturada no bloco try interno, ela será propagada para o bloco try externo.
Propagação de exceções:
Quando uma exceção ocorre no bloco interno e não é tratada por ele, ela pode ser capturada pelo bloco externo, permitindo que o programa continue ou encerre de forma controlada.
Exemplo de código com try aninhado:
O exemplo a seguir mostra um bloco try interno que trata erros de divisão por zero, enquanto o bloco try externo trata exceções de acesso fora dos limites do array.
Exemplo de código:
// Usa um bloco try aninhado.
class NestTrys {
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 };
try { // Bloco try externo
for (int i = 0; i < numer.length; i++) {
try { // Bloco try aninhado
// Tenta realizar a divisão
System.out.println(numer[i] + " / " + denom[i] + " is " + numer[i] / denom[i]);
} catch (ArithmeticException exc) {
// Captura exceção de divisão por zero
System.out.println("Can't divide by Zero!");
}
}
} catch (ArrayIndexOutOfBoundsException exc) {
// Captura exceção de acesso fora dos limites do array
System.out.println("No matching element found.");
System.out.println("Fatal error - program terminated.");
}
}
}
Saída do programa:
Quando ocorre uma divisão por zero, a exceção é capturada pelo bloco try interno e o programa continua.
Quando ocorre um erro de índice fora dos limites do array, o bloco try externo captura a exceção e encerra o programa.~
Exemplo de saída:
4 / 2 is 2
Can't divide by Zero!
16 / 4 is 4
32 / 4 is 8
Can't divide by Zero!
128 / 8 is 16
No matching element found.
Fatal error – program terminated.
Uso prático:
- Blocos try aninhados permitem que diferentes tipos de erros sejam tratados de forma separada:
- Erros menos graves (como divisão por zero) podem ser tratados localmente, permitindo que o programa continue.
- Erros mais graves (como acesso fora dos limites do array) podem ser capturados pelo bloco externo, levando a uma ação mais drástica, como a finalização do programa.
Conclusão:
- Usar blocos try aninhados é útil quando diferentes categorias de erros precisam ser tratadas de maneiras distintas.
- Isso permite maior flexibilidade no controle do fluxo de execução do programa, permitindo tratar exceções leves internamente e deixando exceções graves para o bloco externo.
Top comments (0)