Olá pessoal!
O professor escreveu o código da seguinte forma:
public static void main(String[] args) {
Conexao con = null;
try {
con = new Conexao();
con.leDados();
} catch(IllegalStateException ex) {
System.out.println("Deu erro na conexao");
} finally {
con.fecha();
}
}
Sobre esse trecho, vi que se eu criar um objeto Conexao antes mesmo do bloco try, no caso substituindo o "null" por "new Conexao()", o código também compila(Segue o exemplo abaixo):
public static void main(String[] args) {
Conexao con = new Conexao();
try {
con.leDados();
//resto da implementação...
}
}
Isso seria uma má prática? Posso fazer dessa maneira, ou se fosse em um projeto maior me traria algum problema posteriormente?
Também tive uma outra dúvida, com relação ao bloco finally. Testando aqui, também vi que se eu chamasse o método fecha() depois do catch mas sem abrir o bloco finally, o código também compilaria e me entregaria a mesma execução(Segue o exemplo):
public static void main(String[] args) {
Conexao con = null;
try {
con = new Conexao();
con.leDados();
} catch(IllegalStateException ex) {
System.out.println("Deu erro na conexao");
}
// chamando o método sem o bloco finally
con.fecha();
}
Isso também seria uma má prática, ou também pode ser usado? Se sim, quais os problemas que eu poderia enfrentar mais pra frente a medida que meu código vai crescendo?
Nos dois casos (instanciar a classe antes do try ou não, e chamar o método sem usar o finally ou não), qual seria a abordagem mais correta?