Pessoal seguinte eu estava olhando algums exercicios e me deparei com a seguinte questão.
try{
}finally{
}
Por que do uso do Try sem catch ?
Pessoal seguinte eu estava olhando algums exercicios e me deparei com a seguinte questão.
try{
}finally{
}
Por que do uso do Try sem catch ?
Esse camarada aqui explica um pouco sobre isso.
Pessoal seguinte eu estava olhando algums exercicios e me deparei com a seguinte questão.try{ }finally{ }Por que do uso do Try sem catch ?
O finally tem um comportamento especial. Ele é chamado aconteça o que acontecer dentro do bloco try.
Isto é util quando vc precisa fazer alguma coisa antes que o método termine, normalmente fechar recursos, mas ha outros usos
repare
try{
System.out.println("oi");
return "java";
}finally{
System.out.println("adeus");
}
O que é impresso ?
É impresso "oi" e "adeus". Repare que mesmo quando eu ordeno o return no fim do bloco try o finally ainda corre.
Este é a utilidade do finally ele corre depois do return mas antes que o método termine.
Dê um breakpoint e execute passo a passo para ver como é o comportamento.
public void abreConexao() throws Exception{
if (conexao == null){
throw new Exception("Conexão já aberta!");
}
// CODIGO QUALQUER AQUI
conexao = DriverManager.getConnection("bla bla");
}
Vamos supor que eu queira fechar uma conexão com uma base de dados e colocar como null sua referência...
try{
conexao.close();
conexao = null;
}catch(Exception e){
}
Nesse caso não estou preocupado com a excessão porque a única coisa que realmente quero que ocorra é o fechamento da conexão.
Entretanto, se houver um erro, a conexão não será setada como null... entao faço assim:
try{
conexao.close();
}catch(Exception e){
}finally{
conexao = null;
}
Como o catch não está sendo usado aqui, eu simplesmente coloco o finally, que será executado sempre, independente se a conexao for fechada ou não...
try{
conexao.close();
}finally{
conexao = null;
}
ok?
Olá
Você pode fazer um bloco try{}finally{}, por exemplo, para alguns casos em que não existe uma maneira de se tratar um determinada exceção (como: exceções da VM ou de memória), evitando assim ter que lançar a exceção para ser “tratada” mais tarde (exceções devem ser tratadas caso sejam do tipo checadas).
O finally como os amigos ja falaram, pode ser usado para fechar conexões com banco ou fechar arquivos - de modo que o finally sempre será executado, mesmo que uma exceção não seja lançada.
Espero ter ajudado.