5

finalize()の実行中に例外がスローされた場合はどうなりますか?スタックは通常のように巻き戻されますか?finalize()を続行し、例外を無視しますか?finalize()を停止し、オブジェクトのGCを続行しますか?または、他の何か?

finalize()の使用に関するガイドラインを探しているわけではありません。それを説明するページがたくさんあります。

4

3 に答える 3

9

Object#finalize() javadocから:

finalizeメソッドによってスローされた例外により、このオブジェクトのファイナライズは停止されますが、それ以外の場合は無視されます。

于 2010-06-14T14:53:13.883 に答える
4

ファイナライザーを作成する正当な理由があると仮定して、ファイナライザーをコーディングする正しい方法は次のとおりです。

protected void finalize() throws Throwable
{
  try
  {
    // my finalization code
  }
  finally
  {
    super.finalize();
  }
}
于 2010-06-15T07:17:41.260 に答える
1

例外がスローされた場合、finalizeの呼び出しは終了し、次回は呼び出されませんが、オブジェクトはメモリからGCされます。

于 2012-03-06T19:44:35.120 に答える