Opa Giovani, isso se deve ao escopo da variável con
.
A existência de uma variável é limitada pelo seu escopo indicado pelas chaves { }. Então, observando o código:
public static void main(String[] args) {
Conexao con = null;
try {
con = new Conexao(); -> instancia da Conexao
con.leDados(); -> Excecao
} catch(IllegalStateException ex) {
System.out.println("Deu erro na conexao");
} finally {
con.fecha();
}
} -> fim da vida util da variavel con
Como con
foi declarado no bloco do método main()
, a "vida útil" dessa variável vai se estender até fechar as chaves do main()
no final do programa, podendo ser acessado por qualquer um que esteja dentro desse escopo (entre as chaves do main()
).
Já no caso da declaração do con
dentro do bloco try:
public static void main(String[] args) {
// Conexao con = null;
try {
Conexao con = new Conexao(); -> instancia da Conexao
con.leDados(); -> Excecao
} -> fim da vida util da variavel con
catch(IllegalStateException ex) {
System.out.println("Deu erro na conexao");
} finally {
con.fecha(); -> con nao existe mais nesse ponto
}
}
O escopo de con
estará limitado até o fechamento das chaves do try.
Bom, acho que é isso. Se ficou alguma dúvida estou à disposição!!