Java中的Python重试等效项

时间:2018-08-15 15:33:24

标签: java try-catch

我对Java非常陌生,正在尝试错误处理。我在python中非常熟练,而且我知道python中的错误处理会继续

while True:
      try:
          *some code*         
      except IndexError:
             continue
             break

我想知道java中异常后重试循环的等效方式

编辑: 到目前为止,这就是我所拥有的,但是,每当引发异常时,它都会发生无限循环,并显示“输入一个简短内容:错误,然后重试。”

while(true)
    {
        try {
            System.out.print("Enter an Short: "); //SHORT
            short myShort = reader.nextShort();
            System.out.println(myShort);
            break;
        }
        catch (InputMismatchException e) {
            System.out.println("Error Try again.");
            continue;
        }
    }

澄清我到底想要什么。抛出“ InputMismatchException”后,循环会重新运行并再次提示用户,直到用户输入正确的内容为止。我希望这可以澄清我想做什么。

3 个答案:

答案 0 :(得分:0)

当您的问题询问错误处理时,您以IndexError为例,Java中的等效内容可能是:

try {
    //*some code*
}
catch(ArrayIndexOutOfBoundsException exception) {
    //handleYourExceptionHere(exception);
}

关于ArrayIndexOutOfBoundsException,您来看看here, in the documentation。通常,关于例外,您可以阅读here

编辑,根据您的问题版本,添加更多信息...

while(true)
{
    try {
        System.out.print("Enter a short: ");
        short myShort = reader.nextShort();
        System.out.println(myShort);
    }
    catch (InputMismatchException e) {
        System.out.println("Error! Try again.");
        //Handle the exception here...
        break;
    }
}

在这种情况下,当发生InputMismatchException时,将显示错误消息,并且break应该离开循环。我还不了解您的要求,但是希望对您有所帮助。

答案 1 :(得分:0)

您所拥有的几乎就像@Thomas所说的那样好。只需添加一些括号和分号即可。它应该看起来像下面的代码。

while(true){
    try{
        // some code
        break; // Prevent infinite loop, success should break from the loop
    } catch(Exception e) { // This would catch all exception, you can narrow it down ArrayIndexOutOfBoundsException
        continue;
    }
}

答案 2 :(得分:0)

在@Slaw的帮助下,他确定扫描器将继续输入相同的值,除非我在循环结束时将其关闭,并且这是工作代码。

while (true)
    {
        Scanner reader = new Scanner(System.in);
        try
        {
            System.out.print("Enter an Short: "); //SHORT
            short myShort = reader.nextShort();
            System.out.println(myShort);
            reader.close();
            break;
        }
        catch (InputMismatchException e)
        {
            System.out.println("Error Try again.");
        }

    }