Java
Home

Tratando Exceções

 

/*
* Main.java
*
* Created on 13 de Março de 2007, 20:13
*/

package exception;

import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;

import javax.swing.*;

/**
*
* @author adrw
*/

public class Main extends JFrame implements ActionListener
{

   private JTextField input1, input2, output;
   private int num1, num2;
   private double resultado;

   /** Creates a new instance of Main */
   public Main()
   {
      super("Demonstração de Exceção");

      Container container = getContentPane();
      container.setLayout( new GridLayout(3, 2) );

      container.add( new JLabel("Digite um numero:", SwingConstants.RIGHT) );
      input1 = new JTextField(10);
      container.add( input1 );

      container.add( new JLabel("Digite o denominador:", SwingConstants.RIGHT) );
      input2 = new JTextField(10);
      container.add( input2 );

      input2.addActionListener( this );

      container.add( new JLabel("Resultado:", SwingConstants.RIGHT) );
      output = new JTextField(10);
      container.add( output );

      setSize( 400, 100 );
      setVisible( true );


   }


   public void actionPerformed( ActionEvent event )
   {
      DecimalFormat precision = new DecimalFormat( "0.00" );
      output.setText("");

      try {
         num1 = Integer.parseInt( input1.getText() );
         num2 = Integer.parseInt( input2.getText() );

         resultado = divisao( num1, num2 );
         output.setText( precision.format( resultado ) );
      }
      catch ( NumberFormatException numberFormatException )
      {
         JOptionPane.showMessageDialog( this, "Você precisa digitar 2 numero", "Numeros invalidos",          JOptionPane.ERROR_MESSAGE );
      }
      catch ( CMatematicaException mat )
      {
         JOptionPane.showMessageDialog( this, mat.toString(), "Numeros invalidos", JOptionPane.ERROR_MESSAGE );
      }
   }

   public double divisao( int vnum1, int vnum2 )
   throws CMatematicaException
   {
      if ( vnum2 == 0 )
      {
         throw new CMatematicaException();
      }

      return ( double ) vnum1 / vnum2;
   }

   /**
   * @param args the command line arguments
   */

   public static void main(String[] args)
   {
      Main app = new Main();
      app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }

   private class CMatematicaException extends ArithmeticException
   {
      public CMatematicaException()
      {
         super("Divisao por zero!");
      }

      public CMatematicaException( String mensagem )
      {
         super( mensagem );
      }
   }

}