我有以下尝试捕捉:
try
{
while(run)
{
try
{
// try something
}
catch
{
// error catch 1
}
}
}
catch()
{
// error catch 2
}
finally
{
// DONE
}
根据我在error catch 1
中抛出错误之后的情况,它将再次继续循环直到run
为真,有时我的代码没有进行最后进入DONE
码。我真的不知道它是怎么回事?
答案 0 :(得分:4)
while循环将一直持续到:
run
是假的,或例如:
while(true) {
try {
throw new AnException();
} catch (SomeOtherException e) {}
}
将立即退出,因为您没有在catch块中捕获AnException
(假设SomeOtherException
不是AnException
的超类)。
答案 1 :(得分:0)
按照我在错误捕获1中抛出错误后的状态,它将再次继续循环直到运行为真
如果您从Throwable
抛出任何catch1
,它会转到下一个可以处理catch
类型的Throwable
。在这种情况下,循环中断。如果没有其他catch
可以捕获Throwable
类型,那么finally
将执行,控件将转到调用方法。