5
ガベージコレクションプロシージャ中にファイナライザメソッドで例外が発生した場合、.NET
の内部で実際に何が起こるのでしょうか。ヒープとLOHではロジックが異なるのですか?誰も詳細な説明を提供できますか?ファイナライザメソッド(〜メソッド)で例外が発生した場合.NETで何が起こったのですか
ガベージコレクションプロシージャ中にファイナライザメソッドで例外が発生した場合、.NET
の内部で実際に何が起こるのでしょうか。ヒープとLOHではロジックが異なるのですか?誰も詳細な説明を提供できますか?ファイナライザメソッド(〜メソッド)で例外が発生した場合.NETで何が起こったのですか
何も特別なことはありません。 CLRは例外を検出してプログラムを終了します。
@kmatyaszekによってリンクされている記事は、古いものです。ファイナライザとワーカースレッドの例外を呑み込むことは、.NET 1.xの機能であり、多くの不幸を引き起こしました。これが起こったときにプログラムが正常に動作しなくなる理由を診断することはかなり困難です。 .NET 2.0ではそれを終わらせました。デフォルトのポリシーは常にプログラムを終了させることです。技術的には、カスタムCLRホストとapp.exe.configファイルの<legacyUnhandledExceptionPolicy>
要素で上書きできます。あなたが悲惨さを好まない限り、それを使用しないでください。
このセクションをチェックしてください(セクション:ファイナライザと例外):http://msdn.microsoft.com/en-us/library/aa302312.aspx – kmatyaszek
ありがとう、私はそれをチェックし、 、自分自身に答えようとします。 – Ph0en1x