
import java.util.Scanner;

public class TwoCatchesDemo
{
   public static void main(String[] args)
   {
      try
      {
         System.out.println("Enter number of widgets produced:");
         Scanner keyboard = new Scanner(System.in);
         int widgets = keyboard.nextInt( );
         if (widgets < 0)
             throw new NegativeNumberException("widgets");

         System.out.println("How many were defective?");
         int defective = keyboard.nextInt( );
         if (defective < 0)
             throw new NegativeNumberException("defective widgets");

         double ratio = exceptionalDivision(widgets, defective);
         System.out.println("One in every  " + ratio +
							" widgets is defective.");
      }
      catch(DivideByZeroException e)
      {
         System.out.println("Congratulations! A perfect record!");
      }
      catch(NegativeNumberException e)
      {
         System.out.println("Cannot have a negative number of " +
							 e.getMessage( ));
      }
      System.out.println("End of program.");
   }

   public static double exceptionalDivision(double numerator, double denominator)
                        throws DivideByZeroException

   {
       if (denominator == 0)
             throw new DivideByZeroException( );
       return numerator / denominator;
   }
}