Estou estudando sobre try, catch e entendi como se usa. Mas não entendi a finalidade do finally. Poderia ser em um sistema quem tem aqueles captcha pra fazer um download, se digitar algo invalido, no bloco finally uma variavel acrescenta 1 nela mesma e se chegar a 3 é impossivel fazer o download?
Não importa oque aconteça, o finally sempre vai ser executado independente do cenário, por exemplo quando vc tenta fechar uma conexão com o banco ou fazer qualquer outro tratamento de exceção no catch e isso gera outra exceção, sobra o finaly pra vc pelo menos mostrar uma mensagem pro usuário.
correto. peguei uma prova do meu prof do ano passado e fui tentar fazer essas perguntas
[2.5 pontos] Responda as seguintes perguntas (justificando suas respostas)
a) [0.7] Se nenhuma exceção é lançada em um bloco try, onde o controle (execução) prossegue
quando o bloco try completa sua execução?
b) [0.6] Como um bloco finally se encaixa nesta situação?
c) [0.6] Qual é a razão-chave para a utilização de blocos finally?
d) [0.6] O que acontece se vários blocos catch correspondem ao tipo do objeto (exceção)
lançado?
respondi assim
a) se tiver um bloco finally, o bloco é executado. se não tiver, ele segue para o proximo metodo caso nao haja algum desvio.
b) o bloco finally sempre é executado
c) é um metodo que independente de ter sido encontrado erros ou não, sempre é executado ( ou o que voce me explicou acima)
as outras estao corretas sim,
depende do que voce definiu nos blocos catch, por exemplo:
try {
2/0
} catch (ArithmeticException ae) {//n lembro se e exatamente essa exceção que trata isso
System.out.print("executou o bloco 1";)
} catch (Exception e) {
System.out.print("executou o bloco 2");
}