2012-12-10 138 views
7

一旦在此代碼中發現異常,將運行menuSystem方法,但是一旦我輸入一個數字,程序就會關閉並顯示「Build is successful」消息。一旦發生異常,有什麼辦法可以回到while循環?在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

您想將try/catch放在while循環中 – antlersoft

+1

請在公共論壇上尋求幫助時更好地格式化您的代碼。 – Perception

+0

如果你正確地縮進你的代碼,你將不需要那些冗餘的'// end loop','// end switch'等註釋。 –

回答

15

把你的try/catch裏面你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

trycatchwhile循環中。如果代碼使用nextInt(),那麼您需要跳過無效輸入,因爲在不匹配的情況下它不會被使用。

這將有可能避免的異常使用的ScannerhasNextInt()方法,直到一個有效的輸入處理爲InputMismatchException試圖在消費之前輸入:

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

另一種方式,你可以做到這一點:

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

我知道這是一個較老的問題,但你能詳細說明在這種情況下'繼續'應該做什麼? – Nils

+0

對不起,繼續暗示。無論如何,它將持續循環。 – djangofan