Dúvida com Exceptions

4 respostas
S

E ai galera…to apanhando feio aqui com uma Exception. O lance é o seguinte eu criei um método que verifica se os JTextfields da minha GUI estão em branco. Se ao clicar no botão, algum deles estiver em branco a execução deveria parar, mas não está parando.

Ele apresenta na tela o JOptionpane com a mensagem de erro mais o actionPerformer do botão continua sua execução.

Segue os códigos:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        try {
            camposEmBranco();
        } catch (CampoEmBrancoException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());  
        }

// Restante do código
}
private void camposEmBranco() throws CampoEmBrancoException{
        
            if (jTextField1.getText().trim().equals("") || jTextField2.getText().trim().equals("") || jTextField3.getText().trim().equals("")) {
                    throw new CampoEmBrancoException(("Campo(s) em branco, favor verificar."));
            }
    }
public class CampoEmBrancoException extends Exception {

    public CampoEmBrancoException(String msg) {
        super(msg);
    }
}

Por que a execução do botão não está parando no catch quando algum dos campos está em branco?

4 Respostas

ErickRAR

O restante do código deveria estar dentro do try, não fora. Da maneira que está fazendo, ele verificar -> trata o erro -> continua normalmente, ja que você tratou dentro do catch.

S

Entendi Erick, mas se eu considerar que o restante do código também possui outra exceptions ficaria um try/catch dentro do outro?

Não existe uma forma de eu forçar a parada dentro desse catch que postei?

ErickRAR

Você pode colocar vários catch’s no mesmo try.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  
        try{
            camposEmBranco();
              //código
        } catch (CampoEmBrancoException ex) {  
            JOptionPane.showMessageDialog(this, ex.getMessage());    
        }  catch (CampoInvalidoException ex) {  
            JOptionPane.showMessageDialog(this, ex.getMessage()); 
        }  catch (NullpointerException ex) {  
            JOptionPane.showMessageDialog(this, ex.getMessage()); 
       }  catch (Exception ex) {  
            JOptionPane.showMessageDialog(this, ex.getMessage()); 
}
}

Assim que der o erro ele pulará para a Exception correspondente. os catchs devem seguir uma ordem hierarquica. Você não pode colocar Exception no primeiro catch e CampoEmBrancoException , pois dá erro de compilação, e isso é meio óbvio, já que está tentando tratar uma exception especifica sendo que ela foi tratada de uma maneira geral anteriormente.

S

Valeu Erick! :smiley:

Criado 15 de abril de 2014
Ultima resposta 15 de abr. de 2014
Respostas 4
Participantes 2