-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

于 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 に答える
0

私の意見では、catch ステートメントは使用しないでください。通常のプログラム フローの一部として indexOutOfBoundsException を検討しています。

このエラーが発生する特定の状況があります。たとえば、完全に入力されていないフィールドのセットである可能性があります。私の解決策は、例外の原因となる状況をテストし、適切に行動することです。

if (fieldsNotCompleted()){
    restart(); // or continue; or ...
} else {
    while ( ... ) {
        doSomething();
    }
}    

このようにして、プログラムをより読みやすく、修正しやすくします。また、あなたは状況に応じて行動しますが、原因がはっきりしない魔法のエラーではありません。エラーのキャッチは、通常のプログラム フローの一部であってはなりません。

于 2012-08-19T09:20:31.260 に答える