2012-12-10 8 views
7

Khi một ngoại lệ bị bắt trong mã này, phương thức menuSystem được chạy, nhưng một khi tôi nhập vào một số chương trình đóng và thông báo "Xây dựng thành công" được hiển thị . Có cách nào để quay trở lại vòng lặp while khi một ngoại lệ đã xảy ra?Tiếp tục thực hiện vòng lặp sau khi bắt một ngoại lệ trong try/catch

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(); 
    } 
} 
+3

Bạn muốn đặt thử/nắm bắt trong vòng lặp while – antlersoft

+1

Vui lòng định dạng mã của bạn tốt hơn khi yêu cầu trợ giúp trên diễn đàn công khai. – Perception

+0

Nếu bạn thụt lề mã của mình đúng cách, bạn sẽ không cần những cụm từ '// end loop',' // end switch', v.v. dư thừa. –

Trả lời

15

đặt thử của bạn/catch bên trong của bạn vòng lặp while:

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(); 
     } 
    } 
1

Đặt trycatch trong while vòng lặp. Nếu mã đang sử dụng nextInt() thì bạn cần bỏ qua đầu vào không hợp lệ vì mã sẽ không bị tiêu thụ trong trường hợp không khớp.

Nó sẽ có thể để tránh việc xử lý cho InputMismatchException bằng hasNextInt() phương pháp Scanner cho đến khi một đầu vào hợp lệ ngoại lệ được nhập trước khi cố gắng tiêu thụ nó:

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

Một cách khác bạn có thể làm điều đó:

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

Tôi biết đây là một câu hỏi cũ hơn nhưng bạn có thể xây dựng trên những gì 'tiếp tục' là nghĩa vụ phải làm trong trường hợp này? – Nils

+0

Xin lỗi, tiếp tục được ngụ ý. Nó sẽ tiếp tục thông qua các vòng lặp anyway. – djangofan