如果catch和finally块都抛出异常会发生什么?
答案 0 :(得分:32)
当finally
块抛出异常时,它将有效地隐藏从catch
块抛出的异常,并且将是最终抛出的异常。因此,在捕获时记录异常或确保finally块本身不会抛出异常非常重要,否则您可能会抛出被扼杀但从未见过的异常。
答案 1 :(得分:6)
当catch抛出异常时,最后将运行block然后以异常退出。 如果finally块抛出异常,则该块将以异常退出。
答案 2 :(得分:4)
抛出最后一个异常抛出。
答案 3 :(得分:4)
adrianbanks已经很好地回答了这个问题,但以下文章应该很有趣: Interesting Exception Results: Throwing Exceptions From the Finally Block
答案 4 :(得分:-4)
HI Nwaman我觉得你回答错了我在windows appliaction中测试了它,我发现如果你写一个类似下面的程序
try
{
string s = "hu";
int i = int.Parse(s);
}
catch (Exception ex)
{
string s = "hu";
int i = int.Parse(s);
throw new Exception();
}
finally
{
MessageBox.Show("hi");
}
这最终不会导致执行,