Eu estou estudando para SCJP6 e no test killer vi esta questão.
E a resposta é BCE.
Concordo com o B e o E.
Mas o C eu acho que está errado.
Pois se lançar uma exceção na linha 35, o código vai lançar uma exceção em tempo de execução
E nunca vai chegar a executar a linha 37, fiz um teste tentando fazer uma divisão por zero(exemplo) na linha 35,
a execução para aí devido a exception.
Alguém sabe me dizer se estou certo ?
E quanto a resposta A, não tenho certeza.
4. Given:
31. // some code here
32. try {
33. // some code here
34. } catch (SomeException se) {
35. // some code here
36. } finally {
37. // some code here
38. }
Under which three circumstances will the code on line 37 be executed?
(Choose three.)
A. The instance gets garbage collected.
B. The code on line 33 throws an exception.
C. The code on line 35 throws an exception.
D. The code on line 31 throws an exception.
E. The code on line 33 executes successfully.
É verdade. é que eu na hora de fazer o teste não tinha colocado nada na linha 37.
Coloquei um System.out.println("Testando Finally"); e ele executa mesmo após a exception.
Valeu galera.
O Compilador sempre executa o que estiver dentro do bloco finally, independente de uma exceção ocorrer ou não, a única exceção a essa regra está no código abaixo, se vc fizer uma chamada a System.exit( ) antes do finally ele não é executado óbvio.
[quote=dfsilva86]O Compilador sempre executa o que estiver dentro do bloco finally, independente de uma exceção ocorrer ou não, a única exceção a essa regra está no código abaixo, se vc fizer uma chamada a System.exit( ) antes do finally ele não é executado óbvio.
Bem veja aki o que o metodo diz, System.exit(n) “Terminates the currently running Java Virtual Machine. The argument serves as a status code; by convention, a nonzero status code indicates abnormal termination.”
Ou seja, se passar zero como paramentro quer dizer q termino normal, se for diferente e uma terminaçao anormal