我有一个 IndexOutOfBoundsException,当发生这种情况时,我想重新启动我的程序或跳回我的 while 循环。这可能吗?
问问题
553 次
5 回答
2
您可以将循环包装在循环和 try/catch 块中:
boolean done = false;
while (!done) {
try {
doStuff();
done = true;
} catch (IndexOutOfBoundsException e) {
}
}
在这段代码中,doStuff()
是你的循环。您可能还需要做一些额外的簿记,这样您就不会永远重复异常。
于 2012-08-19T09:06:15.910 回答
0
在我看来,你不应该使用 catch 语句。您正在考虑将 indexOutOfBoundsException 作为正常程序流程的一部分。
在某些情况下可能会发生此错误。例如,它可能是一组未完全填写的字段。我的解决方案是测试导致您的异常的情况并采取适当的行动。
if (fieldsNotCompleted()){
restart(); // or continue; or ...
} else {
while ( ... ) {
doSomething();
}
}
这样,您可以使您的程序更具可读性并且更易于修复。您也根据情况采取行动,而不是针对出现的一些您不确定原因的神奇错误。错误捕获不应该是正常程序流程的一部分。
于 2012-08-19T09:20:31.260 回答
0
您的问题非常笼统,但通常您使用该catch
语句来继续您的程序流程。
如果要重新启动程序,请将其执行包装在启动脚本中,如果程序以IndexOutOfBoundsException
.
于 2012-08-19T09:06:32.203 回答
0
您可以使用 try 和 catch 块:
while (condition) {
try {
// your code that is causing the exception
} catch (IndexOutOfBoundsException e) {
// specify the action that you want to be triggered when the exception happens
continue; // skipps to the next iteration of your while
}
}
于 2012-08-19T09:09:17.290 回答
0
好吧,很难确切地看到需要做什么才能跳回您的 while 循环。但:
当 IndexOutOfBoundsException 发生时,您可以捕获它并执行您需要的操作,例如:
public static void actualprogram() {
// whatever here
}
public static void main(String args[]) {
boolean incomplete = true;
while (incomplete) {
try {
actualprogram();
incomplete = false;
} catch (IndexOutOfBoundsException e) {
// this will cause the while loop to run again, ie. restart the program
}
}
}
于 2012-08-19T09:10:01.493 回答