c# – 如果finally块抛出异常会发生什么?

如果一个finally块抛出异常,究竟发生了什么?

具体来说,如果异常被抛出中途通过finally块会发生什么。做这个块中的其余语句(之后)是否被调用?

我知道例外会向上传播。

最佳答案

If a finally block throws an exception what exactly happens ?

这个异常传播出去和向上,并且将(可以)在更高级别处理。

你的finally块不会在抛出异常的地方完成。

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

C# 4 Language Specification § 8.9.5: If the finally block throws another exception, processing of the current exception is terminated.

转载注明原文:c# – 如果finally块抛出异常会发生什么? - 代码日志