Criando minha Exception

6 respostas
M

olá pessoa!
bom é o seguinte: eu tô querendo criar uma classe extendida ao SQLExeption, do tipo InserirRegistroException.
Mas… eu num tenho noção de como fazer. Creio eu q tem q ser assim:

public class InserirRegistroException extends SQLException

mas minha duvida é: como “pegar” o erro?
se alguem tiver um exemplinho bem simplesinho eu agradeço!!!
se num fui mto claro ou falei bobeira, desculpa ae!

vlw desde já!

6 Respostas

M

bem, qual é o erro em especial q tu quer tratar? …um de inserir registro? … eu ja precisei de algo parecido, pq nos meus DAOs eu só testava se dava SQLException, mas eu sempre tenho um método pra inserir, outro pra deletar… etc… e em cada método eu coloco um catch pra uma SQLException, ai, eu sei qual é q ta dando erro usando um println() no catch de cada método…

M

intaum matheus, os meus metodos de inserir, deletar etc, estaum assim, por exemplo:

public boolean Pesquisa(String strSQL) throws SQLException { Statement Comando = Conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); tblGeneros = Comando.executeQuery(strSQL); return tblGeneros.next(); }

em vez de fazer throws SQLException, seria throws PesquisaException

nesse caso, eu gostaria de criar uma Exception mais especifica, pra usar assim

try { NomeDaClasse.Pesquisa(strSQL); } catch (PesquisaException ex) { System.out.println("aqui eu coloco uma msg de acordo com o erro"); }

vlw!

M

mas tu pode fazer isso perfeitamente, só extendendo SQLException :slight_smile:

M

pode ser uma exception q trate qualque tipo de erro, mas eu gostaria de aprender como criar minha propria.

msm assim, obrigado

M

então ai vai um exemplo de exceção lançada por divisão por zero:

public class DivideByZeroException extends ArithmeticException {

   public DivideByZeroException()
   {
      super( "Attempted to divide by zero" );
   }

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

}

..eai vai o programinha pra tu lançá-la:

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;

public class DivideByZeroTest extends JFrame implements ActionListener {

   private JTextField input1, input2, output;
   private int n1, n2;
   private double result;

   public DivideByZeroTest()
   {
      super( "Demonstrando excecoes" );

      getContentPane().setLayout( new GridLayout( 3, 2 ) );

      getContentPane().add( new JLabel( "Numerador: ", SwingConstants.RIGHT ) );

      input1 = new JTextField( 10 );
      getContentPane().add( input1 );

      getContentPane().add( new JLabel( "Denominador: ", SwingConstants.RIGHT ) );

      input2 = new JTextField( 10 );
      getContentPane().add( input2 );

      input2.addActionListener( this );

      getContentPane().add( new JLabel( "Resultado: ", SwingConstants.RIGHT ) );
      output = new JTextField();
      output.setEditable( false );
      getContentPane().add( output );

      setSize( 425, 100 );
      show();

   }

   public void actionPerformed( ActionEvent e )
   {
      DecimalFormat precision3 = new DecimalFormat( "0.000" );

      output.setText( "" );

      try {

         n1 = Integer.parseInt( input1.getText() );
         n2 = Integer.parseInt( input2.getText() );

         result = quociente( n1, n2 );
         output.setText( precision3.format( result ) );

      } catch ( NumberFormatException numberFormat ) {

         JOptionPane.showMessageDialog( this, "Digite 2 inteiros neh" );

      } catch ( ArithmeticException ex ) {

         JOptionPane.showMessageDialog( this, ex.toString() );

      }


   }
    
   private double quociente( int n1, int n2 ) throws DivideByZeroException
   {
      if ( n2 == 0 )
         throw new DivideByZeroException();

      return ( double ) n1 / n2 ;
   }
   
   public static void main( String args[] )
   {
      DivideByZeroTest win = new DivideByZeroTest();

      win.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }

}
M

vlw ae mateus!!

obrigado pela ajuda :!: :!:

Criado 12 de junho de 2004
Ultima resposta 13 de jun. de 2004
Respostas 6
Participantes 2