Erro de compilação no retorno de método

1 resposta
guj1

Pessoal,

O método abaixo não compila se eu excluir a linha do return null no catch(), porém o mesmo não acontece se lançar uma exceção no catch() como mostra o método seguinte. Por que isso acontece?

public ArrayList<BoEmpresa> BuscaTodasEmpresas() {
        PreparedStatement ps = null;
        Connection conn = this.conn;
        ResultSet rs = null;
       
        try{
            ps = conn.prepareStatement("SELECT * FROM empresa");
            rs = ps.executeQuery();
            BoEmpresa empresa = new BoEmpresa();
            ArrayList<BoEmpresa> listaDeEmpresas = new ArrayList<>();
            while(rs.next()) {
                empresa.setCodigo(rs.getInt(1));
                empresa.setRazao(rs.getString(2));
                empresa.setEmail(rs.getString(3));
                empresa.setCnpj(rs.getString(4));
                empresa.setSenha(rs.getString(5));
                empresa.setPorte(rs.getString(6));
                empresa.setNumEmpresados(rs.getInt(7));
                empresa.setRamoAtuacao(rs.getString(8));
                empresa.setValores(rs.getString(9));
                listaDeEmpresas.add(empresa);
            }
            return listaDeEmpresas;
        } catch(SQLException e) {
            e.getMessage();
            return null;
        }
    }



    lançando uma exceção e sem retornar nulo.

    public ArrayList<BoEmpresa> BuscaTodasEmpresas() throws EmpresaDAOException {
        PreparedStatement ps = null;
        Connection conn = this.conn;
        ResultSet rs = null;
       
        try{
            ps = conn.prepareStatement("SELECT * FROM empresa");
            rs = ps.executeQuery();
            BoEmpresa empresa = new BoEmpresa();
            ArrayList<BoEmpresa> listaDeEmpresas = new ArrayList<>();
            while(rs.next()) {
                empresa.setCodigo(rs.getInt(1));
                empresa.setRazao(rs.getString(2));
                empresa.setEmail(rs.getString(3));
                empresa.setCnpj(rs.getString(4));
                empresa.setSenha(rs.getString(5));
                empresa.setPorte(rs.getString(6));
                empresa.setNumEmpresados(rs.getInt(7));
                empresa.setRamoAtuacao(rs.getString(8));
                empresa.setValores(rs.getString(9));
                listaDeEmpresas.add(empresa);
            }
            return listaDeEmpresas;
        } catch(SQLException e) {
            throw new EmpresaDAOException("Erro ao listar as empresas (" + e.getMessage() + ").");
        }
    }

1 Resposta

javer

Quando você lança uma exceção na camada de cima você tratar a exceção, enquanto que retornando um null também na camada de cima você pode tratar o valor retornado comparando se é null, só que dessa forma você não sabe qual foi o problema.

Enfim, a melhor abordagem é aquela que você sobe a exceção para a camada superior ele trata ela lá.

Não sei se era isso a sua dúvida.

Criado 24 de maio de 2014
Ultima resposta 1 de jun. de 2014
Respostas 1
Participantes 2