我对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”后,循环会重新运行并再次提示用户,直到用户输入正确的内容为止。我希望这可以澄清我想做什么。
答案 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.");
}
}