Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我很好奇,.NET如果在垃圾收集过程中终结器方法中发生异常,内部到底发生了什么。堆和 LOH 的逻辑是否不同?谁能提供详细的描述?
.NET
没什么特别的。CLR 将检测到异常并终止程序。
请注意,@kmatyaszek 链接的文章已经过时了。在终结器和工作线程中吞下异常是 .NET 1.x 的一个特性,它导致了很多痛苦。当发生这种情况时,很难诊断程序停止正常运行的原因。.NET 2.0 结束了它,默认策略是始终终止程序。从技术上讲,它可以被自定义 CLR 主机和<legacyUnhandledExceptionPolicy>app.exe.config 文件中的元素覆盖。除非你喜欢痛苦,否则不要使用它。
<legacyUnhandledExceptionPolicy>