Exception Basics
Order of Catch Matters
userChoice = 0; //initialize it try { userChoice = getInput(inputReader); }// order of catch is important catch (NullPointerException e) { System.out.println("Message:"+e.getMessage()); } catch (MyOutOfRangeException e) { System.out.println("Message: " + e.getMessage()); } catch (Exception e) { System.out.println("Catch all Exception"); } finally { //always exectued with our without catch if (userChoice==0) //still has initial value System.out.println("Please try again ..."); else System.out.println("Your choice is:"+ userChoice); }
Prevent Exceptions As Possible
// Get valid numeric format public static double getDouble(Scanner sc, String prompt) { double d = 0.0; boolean isValid = false; while (isValid == false) { System.out.print(prompt); if (sc.hasNextDouble()) { d = sc.nextDouble(); isValid = true; } else { System.out.println( "Error! Invalid number. Try again."); } sc.nextLine(); // discard any other data } return d; }
// Get valid numeric format public static double getDoubleWithin ( Scanner sc, String prompt, double min, double max ) { double d = 0.0; boolean isValid = false; while (isValid == false) { d = getDouble(sc, prompt); if (d <= min) { System.out.println( "Error! Number must be greater than " + min + "."); } else if (d >= max){ System.out.println( "Error! Number must be less than " + max + "."); } else isValid = true; } return d; } Scanner sc = new Scanner(System.in); double subtotal1 = getDouble(sc, "Enter subtotal: "); double subtotal2 = getDoubleWithinRange( sc, "Enter subtotal: ", 0, 10000);
No comments:
Post a Comment