如果在终结器方法中发生异常,那么在.NET中发生了什么(〜方法)

Ph0*_*n1x 5 .net c# exception

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

Han*_*ant 4

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

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