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 
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 =]