Bom dia!
A minha classe TesteConexao não compila.
Eu verifiquei que no código do professor, que no catch é colocado somente o IllegalStateException.
Queria entender porque isso acontece?
Segue o Código:
public class Conexao implements AutoCloseable {
    public Conexao() {
        System.out.println("Abrindo conexao");
        //throw new IllegalStateException();
    }
    public void leDados() {
        System.out.println("Recebendo dados");
        throw new IllegalStateException();
    }
    @Override
    public void close() throws Exception {
        System.out.println("Fechando conexao");
    }
}
public class TesteConexao {
    public static void main(String[] args) {
        try(Conexao conexao = new Conexao()){ // erro de compilacao aqui
            conexao.leDados();                // pede para add throws Execption no main
                                              // ou add Exception no catch
        }catch (IllegalStateException ex) {
            System.out.println("Deu erro na conexao");
        }
        //------------------------------------------------
//        Conexao con = null;
//        try {
//            con = new Conexao();
//            con.leDados();
//        } catch(IllegalStateException ex) {
//            System.out.println("Deu erro na conexao");
//        } finally {
//            System.out.println("Finally");
//            if (con != null){
//                con.fecha();
//            }
//        }
    }
}