Erro não detectado [resolvido]

7 respostas
D

Galera, to com um problema no meu código e não estou sabendo qual é o problema, o código segue abaixo junto com o erro:

package co.departamentodetransito.visao;

import co.departamentodetransito.Controle.ControleFuncionario;
import co.departamentodetransito.modelo.funcionario.FuncionarioVO;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class OuvinteTelaPrincipalFuncionario {
    private TelaPrincipal tela;

    public OuvinteTelaPrincipalFuncionario (TelaPrincipal tela){
        this.tela = tela;
       this.cadastraFuncionario();
      }

    public void cadastraFuncionario(){
        FuncionarioVO funcionario = tela.getCadastrarFuncionario();
        ControleFuncionario controle = new ControleFuncionario();
        try {
             controle.incluirFuncionario(funcionario);
           }
        catch (SQLException ex) { // o erro se encontra aqui
              Logger.getLogger(OuvinteTelaPrincipalProprietario.class.getName()).log(Level.SEVERE, null, ex);
          }
     }
}

O erro gerado é :
exception java.sql.SQLException is never thrown in body of corresponding try statement

Espero que possam me ajudar

7 Respostas

Eric_Yuzo

Aparentemente esta linha que está no bloco try não declara que possa lançar uma SQLException, por isso não é necessário deixar este try/catch.

D

Eric Yuzo, não entendi, pois estou chamando esse ouvinte na minha classe principal ( que no caso é a tela principal)

D

Me explica uma coisa, se eu tirar esse try/cath e ocorre um erro na inserção no banco de dados o meu sistema vai cai, correto? Se sim, o que devo fazer para que não caia?

Eric_Yuzo

No seu método cadastraFuncionario tem uma linha que está dentro de um bloco try, cujo catch está acusando erro:

exception java.sql.SQLException is never thrown in body of corresponding try statement --> exceção java.sql.SQLException nunca será lançada no corpo da declaração try correspondente.

public void cadastraFuncionario(){ FuncionarioVO funcionario = tela.getCadastrarFuncionario(); ControleFuncionario controle = new ControleFuncionario(); controle.incluirFuncionario(funcionario); // Este comando não deve declarar uma SQLException, por isso não precisa do tratamento de exceção aqui. }

Eric_Yuzo

Se está trabalhando com banco de dados, uma SQLException deve ser lançada sim. O provável é que o tratamento desta exceção esteja sendo feito no método incluirFuncionario da classe ControleFuncionario.

D

Ah ta Eric Yuzo, agora eu entendi. Tens razão, mas o meu try/catch está na classe FuncionarioDAO. Não sei se é a maneira mais correta, porém eu poderia tirar o try/catch que usei no DAO e colocar no Ouvinte, correto?

Eric_Yuzo

Bastaria, ao invés de tratar, declarar a exceção em sua classe DAO. Aí sim poderá colocar o tratamento no Ouvinte sem que ocorra o erro.

Criado 2 de dezembro de 2010
Ultima resposta 2 de dez. de 2010
Respostas 7
Participantes 2