sjh*_*huk 13 c# garbage-collection finalizer
从MSDN引用:
如果Finalize或Finalize的覆盖引发异常,则运行时将忽略该异常,终止该Finalize方法,并继续完成最终化过程.
但如果我有:
~Person()
{
throw new Exception("meh");
}
Run Code Online (Sandbox Code Playgroud)
然后它会导致运行时异常?
ps我知道这应该永远不会发生,但我只是对这种行为感到好奇.我们的一个客户有一个空的尝试捕获他们的所有终结器..它甚至没有记录出错或重新对象:/
Han*_*ant 22
链接报价来源非常重要.我不得不假设它谈论的是旧版本的.NET,可能是版本1.x. 它试图对未处理的例外情况进行"宽容",吞没它们没有发出吱吱声.这没有成功,大量的代码默默地失败是非常难以调试.
.NET 2.0版本结束了这一点,默认的CLR主机终止了应用程序的任何未处理的异常.终结者中的例外是致命的.