Java · Essencial · Inglês · Técnico
finally
Bloco que roda depois de try e catch, haja ou não exceção, usado para liberar recursos. Só deixa de rodar se a JVM encerrar antes, por exemplo com System.exit.
Onde usar
Aparece em limpeza de conexões e arquivos, hoje quase sempre trocada por try-with-resources. Em review: 'return dentro de finally engole a exceção'.
Em código
try {
throw new IllegalStateException();
} finally {
System.out.println("sempre roda");
}Exemplos
The finally block runs even if an exception is thrown.
O bloco finally roda mesmo que uma exceção seja lançada.
Never put a return inside a finally block.
Nunca coloque um return dentro de um bloco finally.
Cuidado
Evite return ou throw dentro do finally: ele substitui o resultado do try e esconde a exceção original.