Source of TwoCatchesDemo.java


  1: //TwoCatchesDemo.java

  3: import java.util.Scanner;

  5: public class TwoCatchesDemo
  6: {
  7:     public static void main(String[] args)
  8:     {
  9:         try
 10:         {
 11:             System.out.print("\nEnter number of widgets produced: ");
 12:             Scanner keyboard = new Scanner(System.in);
 13:             int widgets = keyboard.nextInt();
 14:             if (widgets < 0)
 15:                 throw new NegativeNumberException("widgets.");

 17:             System.out.print("How many were defective? ");
 18:             int defective = keyboard.nextInt();
 19:             if (defective < 0)
 20:                 throw new NegativeNumberException("defective widgets.");

 22:             double ratio = exceptionalDivision(widgets, defective);
 23:             System.out.println("One in every  " + ratio +
 24:                 " widgets is defective.");
 25:         }
 26:         catch(DivideByZeroException e)
 27:         {
 28:             System.out.println("Congratulations! A perfect record!");
 29:         }
 30:         catch(NegativeNumberException e)
 31:         {
 32:             System.out.println("Cannot have a negative number of " +
 33:                 e.getMessage());
 34:         }
 35:         System.out.println("End of program.");
 36:     }

 38:     public static double exceptionalDivision
 39:     (
 40:         double numerator,
 41:         double denominator
 42:     ) throws DivideByZeroException
 43:     {
 44:         if (denominator == 0) throw new DivideByZeroException();
 45:         return numerator / denominator;
 46:     }
 47: }