o finally é executado independente de qualquer coisa??
Ironlynx
Yep!É executado independentemente de uma exceção ser disparada ou não por um bloco try ou qquer bloco catch correspondente!
marciolx
Yep!É executado independentemente de uma exceção ser disparada ou não por um bloco try ou qquer bloco catch correspondente!
O finally só não é executado em casos extremos, como se alguém puxar a tomada do micro onde está rodando a JVM ou numa chamada à System.exit
D
Duque
como assim…agora não entendi…
ele nao sempre executado quando estamos dentro de um statement com try catch??
marciolx
“Duque”:
como assim…agora não entendi…
ele nao sempre executado quando estamos dentro de um statement com try catch??
A cláusula finally será sempre executada… mas…, se dentro do catch ou try houver uma chamada à System.exit(), então o programa termina. Como diz a documentação API de System.exit(): “Terminates the currently running Java Virtual Machine” Hasta la vista, baby
Outra maneira de exterminar a JVM antes do finally ser executado seria dar um chute (tchagi) preciso na CPU enquanto a JVM estiver executando o try ou catch :shock:
Ou imagine que o mundo acabe enquanto a JVM estiver executando o bloco try ou catch :shock:
Resta dizer que o bloco finally será sempre executado, mas nem sempre tudo o que estiver nele, se o próprio bloco finally lançar uma exception, ela será imediatamente propagada para o chamador.
É isso :?:
MarcusGoncalves
Então devo tratar exceções dentro do bloco finally com try … catch (se necessário)?
Ainda, posso ter try … catch … finally dentro do primeiro bloco finally?
Viajei?
marciolx
Então devo tratar exceções dentro do bloco finally com try … catch (se necessário)?
Ainda, posso ter try … catch … finally dentro do primeiro bloco finally?
Viajei?
sim, mas acho que a melhor prática seria não usar código que lança excessões no finally, ou, se isso acontecer, relançar a exception com throw…
eu acho