-2

我有一个 IndexOutOfBoundsException,当发生这种情况时,我想重新启动我的程序或跳回我的 while 循环。这可能吗?

4

5 回答 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 回答