Avatar ·

O bloco finally sempre é executado em Java? Entendendo as nuances

Olá a todos! Sou um desenvolvedor Java iniciante e fiquei confuso com o bloco finally. Eu li que o finally é sempre executado, independentemente de uma exceção ser lançada ou não. Mas na prática, me deparei com algumas situações onde isso parece não ser verdade. Aqui está um exemplo de código que escrevi para testar: ```java public class FinallyTest { public static void main(String[] args) { System.out.println("Resultado: " + testFinally()); } public static int testFinally() { try { System.out.println("No bloco try"); return 1; } catch (Exception e) { System.out.println("No bloco catch"); return 2; } finally { System.out.println("No bloco finally"); return 3; // Isso é o que me confunde } } } ``` Eu esperava que o método retornasse 1 (do try), mas ele retornou 3! Então o finally sobrescreveu o return? Ou estou entendendo algo errado? Além disso, ouvi dizer que se no