Utilidade do finally?

try {
...
}
catch(...) {
...
}
finally {
...
}
...

o codigo dentro do bloco finally será executado havendo ou nao uma exceção, certo?

e o código após o finally? fiz uns testes aqui, e me parece que ele tambem vai ser executado independente de haver ou nao exceções. então qual a utilidade do finally?

Nem sempre. Veja o código abaixo e tente executá-lo:

public class TesteFinally { public static void main(String[] args) throws Exception{ try{ System.out.println("Faço algo..."); int[] i= new int[1]; System.out.println("Esta linha nunca vai acontecer..." + i[3]); } catch(Exception e){ System.out.println("Quando acontecer o erro..." ); throw new Exception("Mando outra Exception"); }finally{ System.out.println("Essa linha sempre vai acontecer..."); } System.out.println("Essa aqui nem sempre..."); } }

espero ter ajudado :smiley:

Mônica Conciani de Moraes

só complementanod… o finally só garante que algo ocorra… isso é boa pratica colocar quando vc quer ter certeza que o código seja executado independente do que ocorra…

o código da Monica não vai executar a ultima linha… pq quando ele entra no catch … ocorre outra exceção… o que para o resto do código… assim… e o finally é executado mesmo que haja + exceções =]