2013-10-19 8 views
5

ガベージコレクションプロシージャ中にファイナライザメソッドで例外が発生した場合、.NETの内部で実際に何が起こるのでしょうか。ヒープとLOHではロジックが異なるのですか?誰も詳細な説明を提供できますか?ファイナライザメソッド(〜メソッド)で例外が発生した場合.NETで何が起こったのですか

+2

このセクションをチェックしてください(セクション:ファイナライザと例外):http://msdn.microsoft.com/en-us/library/aa302312.aspx – kmatyaszek

+0

ありがとう、私はそれをチェックし、 、自分自身に答えようとします。 – Ph0en1x

答えて

4

何も特別なことはありません。 CLRは例外を検出してプログラムを終了します。

@kmatyaszekによってリンクされている記事は、古いものです。ファイナライザとワーカースレッドの例外を呑み込むことは、.NET 1.xの機能であり、多くの不幸を引き起こしました。これが起こったときにプログラムが正常に動作しなくなる理由を診断することはかなり困難です。 .NET 2.0ではそれを終わらせました。デフォルトのポリシーは常にプログラムを終了させることです。技術的には、カスタムCLRホストとapp.exe.configファイルの<legacyUnhandledExceptionPolicy>要素で上書きできます。あなたが悲惨さを好まない限り、それを使用しないでください。

関連する問題