如果在终结器方法(~方法)中发生异常,则在 .NET 中会发生什么情况



我很好奇,如果在垃圾回收过程中终结器方法发生异常,.NET内部到底发生了什么。堆和 LOH 的逻辑是否不同?谁能提供详细的描述?

没什么特别的。 CLR 将检测异常并终止程序。

请注意,@kmatyaszek链接的文章已经过时了。 吞噬终结器和工作线程中的异常是一项 .NET 1.x 功能,它造成了很多痛苦。 发生这种情况时,很难诊断程序停止正常运行的原因。 .NET 2.0结束了它,默认策略是始终终止程序。 从技术上讲,这可以由自定义 CLR 主机和 app.exe.config 文件中的 <legacyUnhandledExceptionPolicy> 元素覆盖。 除非你喜欢痛苦,否则不要使用它。

最新更新