0

次のtry catchがあります:

try
{
   while(run)
   {
      try
      {
         // try something 
      }
      catch
      {
        // error catch 1
      }
   }
}
catch()
{
   // error catch 2
}
finally 
{
   // DONE
}

エラーをスローした後の私の理解によると、error catch 1それは再び while ループrunが true になるまで続行されDONEます。私は本当にそれがどのように起こっているのか分かりませんか?

4

2 に答える 2

4

while ループは次の時点まで続きます。

  • run偽、または
  • catch ブロックでキャッチされない例外が try ブロックでスローされます。

例えば:

while(true) {
    try {
        throw new AnException();
    } catch (SomeOtherException e) {}
}

catch ブロックでキャッチしないため、すぐに終了します(のスーパークラスではないとAnException仮定します)。SomeOtherExceptionAnException

于 2013-06-28T12:33:09.157 に答える
0

エラーキャッチ1でエラーをスローした後の私の理解によると、runがtrueになるまでwhileループで再び続行します

fromをスローすると、そのタイプの を処理できる次のエンクロージングに移動します。その場合、ループは壊れます。そのタイプの をキャッチできるものが他にない場合、が実行され、コントロールは呼び出し元のメソッドに移動します。Throwablecatch1catchThrowablecatchThrowablefinally

于 2013-06-28T12:32:30.187 に答える