如果catch和finally块都抛出异常会发生什么?

时间:2009-09-26 23:24:14

标签: c# java .net exception try-finally

如果catch和finally块都抛出异常会发生什么?

5 个答案:

答案 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");
}

这最终不会导致执行,