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; } }