【发布时间】:2020-05-22 15:14:50
【问题描述】:
我对 Object#finalize() 的 Java Doc 中的这条语句感到困惑:
finalize 方法抛出的任何异常都会导致该对象的终结被暂停,否则会被忽略。
finalize() 抛出的异常是否会影响对象的最终确定?
【问题讨论】:
-
是的,它会停止最终确定。
-
谢谢,但在什么情况下会被忽略?该语句中的“但被忽略”是什么意思?
-
参见The Java Tutorials 中的finalize() 方法 部分。无论如何你都不应该使用它。
-
@J.E.Y 这意味着它不会影响 JVM 或任何其他可终结的对象。实际上,他们是在说他们保证能抓住并吞下任何东西
finalizethrows。 -
我的解释:它会停止实际的方法(或直到
finalize()方法的方法链)但它不会对 JVM 产生任何影响(就像 JVM 正在做try { obj.finalize(); } catch (Throwable ignored) { })