一尘不染

如果finally块引发异常会怎样?

c#

如果finally块引发异常, 究竟 发生了什么?

具体来说,如果在finally块的中间抛出异常,会发生什么情况。该块中的其余语句(之后)是否被调用?

我知道异常会向上传播。


阅读 385

收藏
2020-05-19

共1个答案

一尘不染

如果finally块引发异常, 究竟 发生了什么?

该异常会不断传播,并将(可以)在更高层次上进行处理。

在引发异常之前,您的finally块将 不会 完成。

如果在处理较早的异常期间执行了finally块,则该第一个异常将丢失。

C#4语言规范§8.9.5:如果finally块引发另一个异常,则终止当前异常的处理。

2020-05-19