Erro não detectado [resolvido]

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

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.

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

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?

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. }

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.

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?

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.