Bunion
Bunion

Reputation: 461

Continue executing loop after catching an exception in try/catch

Once an exception is caught in this code, the menuSystem method is run, but once I go to input a number the programme closes and the "Build is successful" message is displayed. Is there any way to get back into the while loop once an exception has occured?

public static void main(String[] args) {
   final UnitResults myUnit = new UnitResults(10, "Java");
   int option = menuSystem();

   try {
      while (option != 0) {
         final Scanner keyb = new Scanner(System.in);
         System.out.println("");
         switch (option) {
         }
      }
   } catch (Exception InputMismachException) {
      System.out.println("\nPlease Enter a Valid Number\n");
      option = menuSystem();
   }
}

Upvotes: 8

Views: 48673

Answers (3)

djangofan
djangofan

Reputation: 29689

Another way you can do it:

   List<File> directories;
   ...
   for ( File f : directories ) {
        try {
            processFolder(f);
        } catch( Exception e ) {
            SimpleLog.write(e);
        }
    }

Upvotes: 0

hmjd
hmjd

Reputation: 122011

Put the try and catch within the while loop. If the code is using nextInt() then you need to skip the invalid input as it will not be consumed in the event of a mismatch.

It would be possible to avoid the exception handling for InputMismatchException by using the hasNextInt() methods of Scanner until a valid input is entered before attempting to consume it:

while (!kb.hasNextInt()) kb.next();

Upvotes: 1

PermGenError
PermGenError

Reputation: 46438

put your try/catch inside your while loop:

    while (option != 0) {
        final Scanner keyb = new Scanner(System.in);
        System.out.println("");
        try {
            switch (option) {

            }
        } catch (Exception InputMismachException) {
            System.out.println("\nPlease Enter a Valid Number\n");
            option = menuSystem();
        }
    }

Upvotes: 18

Related Questions