如果catch和finally块都抛出exception,会发生什么?

如果catch和finally块都抛出exception,会发生什么?

finally块抛出exception时,它将有效地隐藏从catch块抛出的exception,并且将是最终抛出的exception。 因此,在捕获exception时logging日志非常重要,或者确保finally块本身不会抛出exception,否则可能会抛出exception被扼杀,从未见过。

当catch抛出一个exception时,finally块将被运行,然后退出,出现exception。 如果finally块抛出一个exception,块将退出,并有一个exception。

抛出最后一个exception。

它已经被adrianbanks很好的回答了,但是下面这个post应该是有趣的: 有趣的exception结果:从 finally 块中抛出exception

嗨Nwaman我认为你的答案是错误的,我已经在Windows应用程序中testing它,我发现如果你写下如下的程序

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

这不会导致最后的结果,