Try Catch

6 respostas
T

Boa tarde.

Estou com uma dúvida e não sei como resolvo.

Tenho um método que faz a seleção de um Protocolo inserido em um JTField.
Segue código:

public Formulario SelecionaProtocolo() {

        String comando = "Select b.Nome, a.ProtocoloID, a.dataRegistro, a.Problema, a.Situacao from tblRegistro a"
                + " Inner Join tblUsuario b On a.Nome = b.Nome Where a.ProtocoloID = '" + form.getProtocolo() + "'";

        try {

            Statement stmt = cx.fazConexao().createStatement();
            ResultSet rs = stmt.executeQuery(comando);

            String selecionado = "";
            while (rs.next()) {

                String nome = rs.getString("Nome");
                int protocolo = rs.getInt("ProtocoloID");
                Date dataRegistro = rs.getDate("dataRegistro");
                String problema = rs.getString("Problema");
                int situacao = rs.getInt("Situacao");

                form.setProtocolo(protocolo);

                selecionado += " Nome: ";
                selecionado += nome;
                selecionado += "\n";
                selecionado += " Protocolo: ";
                selecionado += String.valueOf(form.getProtocolo());
                selecionado += "\n";
                selecionado += " Data de Registro: ";
                selecionado += dataRegistro.toString();
                selecionado += "\n";
                selecionado += " Situação: ";
                selecionado += situacao;
                selecionado += "\n";
                selecionado += " Problema: ";
                selecionado += problema;
                selecionado += "\n";

                selecionado += "----------------------------------------------------------";
                selecionado += "----------------------------------------------------------";

                rel.PreencherText(selecionado);
                rel.setVisible(true);

            }

            return form;



        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro na Busca, consulte TI!");
        }
        return null;
    }

Eu precisaria tratar uma exceção, por exemplo.
Se o cara Digitar um número que não existe

if(!rs.next()) JOptionPane.showMessageDialog(null,"Msg de erro!!"); por exemplo…

Como eu faço isso?

6 Respostas

N

não sei se entendi direito, mas você pode fazer o seguinte:

if(protocolo != 1 && protocolo !=2){
JOptionPane.showMessageDialog(null, "Digite um protocolo Válido"):
}

O mesmo vc pode fazer com a situação…

Bem não sei se sua duvida era esta…

Kanin_Dragon

Você pode criar uma classe de exceção e disparar essa exceção atraves de um throw.

T

Kanin, como faço isso?

Neninho…Não é isso!!
Se o cara digitar um protocolo aleatório e não existir, ele mostra que não existe depois de dar um select no banco e não obter nenhum retorno!

discorpio

Boa noite a todos.

Simples. Ao invés de utilizar o JOptionPane, utilize a Exceção desta forma:

public Formulario SelecionaProtocolo() {  
  
    String comando = "Select b.Nome, a.ProtocoloID, a.dataRegistro, a.Problema, a.Situacao from tblRegistro a"  
            + " Inner Join tblUsuario b On a.Nome = b.Nome Where a.ProtocoloID = '" + form.getProtocolo() + "'";  
  
    try {  
  
        Statement stmt = cx.fazConexao().createStatement();  
        ResultSet rs = stmt.executeQuery(comando);  
  
        String selecionado = "";  
        while (rs.next()) {  
  
            String nome = rs.getString("Nome");  
            int protocolo = rs.getInt("ProtocoloID");  
            Date dataRegistro = rs.getDate("dataRegistro");  
            String problema = rs.getString("Problema");  
            int situacao = rs.getInt("Situacao");  
  
            form.setProtocolo(protocolo);  
  
            selecionado += " Nome: ";  
            selecionado += nome;  
            selecionado += "\n";  
            selecionado += " Protocolo: ";  
            selecionado += String.valueOf(form.getProtocolo());  
            selecionado += "\n";  
            selecionado += " Data de Registro: ";  
            selecionado += dataRegistro.toString();  
            selecionado += "\n";  
            selecionado += " Situação: ";  
            selecionado += situacao;  
            selecionado += "\n";  
            selecionado += " Problema: ";  
            selecionado += problema;  
            selecionado += "\n";  
  
            selecionado += "----------------------------------------------------------";  
            selecionado += "----------------------------------------------------------";  
  
            rel.PreencherText(selecionado);  
            rel.setVisible(true);  
  
        }
   
  
        if(protocolo != 1 && protocolo !=2){
            // Aqui voce dispara a exceção mesmo dentro de um bloco try...catch  
             throw new Exception("Digite um protocolo Válido");
        }    
  
        return form;  
  
    } catch (Exception e) {  
        e.printStackTrace();  
        JOptionPane.showMessageDialog(null, "Erro na Busca, consulte TI!");
        return null;  
    }  
      
}

Outro detalhe é que a instrução “return null” tem que estar dentro do “catch”

T

Na verdade a condição seria:

if(!rs.next())
throw new Exception("Digite um protocolo Válido");

mas não deu certo mesmo assim…

discorpio

Boa tarde Thiago0803

Analisando melhor o seu código, o melhor seria voce disparar a exceção antes de preencher todos os campos após o select do sql, desta forma:

public Formulario SelecionaProtocolo() {   
  
    String comando = "Select b.Nome, a.ProtocoloID, a.dataRegistro, a.Problema, a.Situacao from tblRegistro a"   
            + " Inner Join tblUsuario b On a.Nome = b.Nome Where a.ProtocoloID = '" + form.getProtocolo() + "'";   
  
    try {   
  
        Statement stmt = cx.fazConexao().createStatement();   
        ResultSet rs = stmt.executeQuery(comando);   
  
        if(!rs.next()) throw new Exception("Digite um protocolo Válido");   
        
        while (rs.next()) {   
  
            String nome = rs.getString("Nome");   
            int protocolo = rs.getInt("ProtocoloID");   
            Date dataRegistro = rs.getDate("dataRegistro");   
            String problema = rs.getString("Problema");   
            int situacao = rs.getInt("Situacao");   
  
            form.setProtocolo(protocolo);   
  
            selecionado += " Nome: ";   
            selecionado += nome;   
            selecionado += "\n";   
            selecionado += " Protocolo: ";   
            selecionado += String.valueOf(form.getProtocolo());   
            selecionado += "\n";   
            selecionado += " Data de Registro: ";   
            selecionado += dataRegistro.toString();   
            selecionado += "\n";   
            selecionado += " Situação: ";   
            selecionado += situacao;   
            selecionado += "\n";   
            selecionado += " Problema: ";   
            selecionado += problema;   
            selecionado += "\n";   
  
            selecionado += "----------------------------------------------------------";   
            selecionado += "----------------------------------------------------------";   
  
            rel.PreencherText(selecionado);   
            rel.setVisible(true);   
  
        }   
  
        return form;   
    
    } catch (Exception e) {   
        e.printStackTrace();   
        JOptionPane.showMessageDialog(null, "Erro na Busca, consulte TI!");
        return null;      
    }   
}
Criado 4 de fevereiro de 2011
Ultima resposta 8 de fev. de 2011
Respostas 6
Participantes 4