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.
Cara, rodei fazendo divisão por zero e ele realmente passou pelo bloco finally, a resposta do TestKiller esta certa.
pintofree
Ta errado nao brother, Finaly ele sempre passa. Sempre
antonioedirane
É 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.
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.
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.
aproveitando o tópico para também tirar uma duvida minha, qual a diferença entre System.exit(0) e System.exit(1) ou outro numero qualquer?
pintofree
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