Junior
O bloco finally é sempre executado na construção try-catch?
sobes.tech IA
Resposta da IA
Não, nem sempre. finally pode não ser executado nos seguintes casos:
- Encerramento da JVM durante a execução do bloco
tryoucatch. Por exemplo, ao chamarSystem.exit(). - Falha na JVM (por exemplo, erro de memória ou estouro de pilha).
- Um ciclo infinito no bloco
tryoucatch. - Encerramento da thread que executa o bloco
try-catch-finally.
Em outros casos, mesmo que uma exceção não verificada seja lançada ou que haja um retorno do bloco try ou catch, o bloco finally será executado.
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("No bloco try");
// Encerrar a JVM antes de executar finally
// System.exit(0);
throw new RuntimeException("Exceção forçada");
} catch (RuntimeException e) {
System.out.println("No bloco catch: " + e.getMessage());
// Retornar do catch, finally ainda será executado
// return;
} finally {
System.out.println("No bloco finally"); // Este código é executado
}
System.out.println("Após try-catch-finally"); // Este código pode não ser alcançado
}
}