ファイナライザーで例外をスローする不正なライブラリで問題が発生しました。もちろん、アプリケーションがクラッシュします。
これを回避するために、ライブラリを独自のAppDomainにロードしようとしましたが、例外が表面に表示され、アプリケーションがクラッシュします。
MSDNに記載されているように、に登録しAppDomain.UnhandledException
ても例外が発生するのを防ぐことはできませんが、「サブAppDomain」でそのような例外をキャッチする方法が他にないことに非常に驚いています。
プラグインホスト、またはAppDomainsを使用して潜在的に有害なコードをサンドボックス化するアプリケーションは、未処理の例外を停止するためにどのように機能しますか?それは実際に可能ですか?
注:私はすでに別の回避策を持っています。これはここで説明されています。不正なファイナライザーは、シャットダウン中にのみ収集されるように見える長期間のオブジェクト上にあるため、この「偽の」エラーをユーザーから隠すだけで十分です。それでも、この回避策は脆弱であることがわかります。これは、他の実際のエラーを隠すか、オブジェクトが以前に収集された場合にアプリケーションを爆破するリスクがあるためです。