8

一旦在此代码中捕获到异常,该menuSystem方法就会运行,但是一旦我输入一个数字,程序就会关闭并显示“构建成功”消息。一旦发生异常,有什么办法可以回到while循环?

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

3 回答 3

18

把你的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();
        }
    }
于 2012-12-10T16:31:48.927 回答
1

tryandcatch放入while循环中。如果代码正在使用,nextInt()那么您需要跳过无效输入,因为它不会在不匹配的情况下被消耗。

在尝试使用之前使用直到输入有效输入InputMismatchExceptionhasNextInt()方法可以避免异常处理:Scanner

while (!kb.hasNextInt()) kb.next();
于 2012-12-10T16:31:42.560 回答
0

另一种方法是:

   List<File> directories;
   ...
   for ( File f : directories ) {
        try {
            processFolder(f);
        } catch( Exception e ) {
            SimpleLog.write(e);
        }
    }
于 2013-08-01T19:57:08.313 回答