0

我有以下尝试捕获:

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

根据我在抛出错误后的理解,error catch 1它将再次在 while 循环中继续,直到run为真,有时我的代码没有这样做,它会进入最终DONE代码。我真的不知道这是怎么回事?

4

2 回答 2

4

while 循环将一直持续到:

  • run是假的,或者
  • try 块中抛出了一个未在 catch 块中捕获的异常。

例如:

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

将立即退出,因为您没有AnException在 catch 块中捕获(假设SomeOtherException不是 的超类AnException)。

于 2013-06-28T12:33:09.157 回答
0

根据我在错误捕获 1 中引发错误后的理解,它将再次在 while 循环中继续,直到运行为真

如果你抛出任何Throwablefrom catch1,它会转到下一个catch可以处理该类型的Throwable. 在这种情况下,循环会中断。如果没有其他catch可以捕获该类型的Throwablefinally则将执行并且控制转到调用方法。

于 2013-06-28T12:32:30.187 回答