c#finalizer抛出异常?

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主机终止了应用程序的任何未处理的异常.终结者中的例外是致命的.

  • 哇,糟糕的编辑.请注意本书的其余部分. (7认同)
  • MSDN链接:4.0 http://msdn.microsoft.com/en-us/library/system.object.finalize(v=VS.100).aspx 1.1 http://msdn.microsoft.com/en-us/library /system.object.finalize(v=VS.71).aspx (2认同)