1
resposta

finally

public static void main(String[] args) {
    Conexao con = null;
    try {
        con = new Conexao();
        con.leDados();
        con.fecha();
    } catch(IllegalStateException ex) {
        System.out.println("Deu erro na conexao");
        con.fecha();
    }
}

Por que criamos uma variável do tipo NULL para instanciar o objeto?

1 resposta

Cria-se uma variável antes do bloco try para que ela tenho o escopo do método main() e ser possível fechá-la no block catch. Caso contrário ela não seria visível no bloco catch.

No java7 foi introduzido o try with resources que simplifica um pouco tudo isso, em que a classe conexão implementaria uma interface Autocloseable que fecharia a conexão automaticamente como se fosse chamda no bloco finally.