2012-12-10 29 views
7

このコードで例外がキャッチされると、menuSystemメソッドが実行されますが、数字を入力するとプログラムが終了し "ビルドに成功しました"というメッセージが表示されます。例外が発生した後、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

whileループ内にtry/catchを入れたい – 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

whileループ内trycatchを置きます。コードが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

これは古い質問ですが、この場合は 'continue'が何をすべきかを詳しく説明できますか? – Nils

+0

申し訳ありません、続行が暗示されています。それはとにかくループを通って続きます。 – djangofan

関連する問題