Scanner Exception Retry

exception, java, java.util.scanner

Solution

If I understood you correctly, you want the program to ask the user to re-enter a right input after it fails. In that case you can do something like:

boolean inputOk = false;
while (!inputOk) {
    System.out.print("Define width: ");
    try {
        width = scanner.nextDouble();
        inputOk = true;
    } catch (InputMismatchException e) {
        System.err.println("That's not a number!");
        scanner.nextLine();   // This discards input up to the 
                              // end of line
        // Alternative for Java 1.6 and later
        // scanner.reset();   
    }
}

Note: you should only catch and retry for a `InputMismatchException`. The `nextXxx` methods throw other exceptions, and if you attempt to retry those, your application will go into an infinite loop.

Problem

How to make scanner retry when exception occur? Consider this app running on CLI mode. Example: ``` System.out.print("Define width: "); try { width = scanner.nextDouble(); } catch (Exception e) { System.err.println("That's not a number!"); //width = scanner.nextDouble(); // Wrong code, this bring error. } ``` If the user not inputting `double` type input, then the error thrown. But i want after the error message appears. It's should be asking the user input the width again. How to do that?

Original source