4

一部の背景情報については、.NET 4.0はデフォルトでCSEをキャッチしなくなりました:http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

新しいAppDomainでコードを実行するアプリに取り組んでいます。そのコードがCSEをスローした場合、処理されていない場合、例外はメインコードにバブルアップします。私の質問は、2番目のAppDomainのCSEがメインのAppDomainの状態を破損しないと安全に想定できるため、2番目のAppDomainを終了して、メインのAppDomainの実行を続行できるかどうかです。

4

1 に答える 1

1

破損状態の例外のコンテキストでは、一般に、もう何も真であると想定することはできません。これらの例外のポイントは、通常はバグのあるアンマネージコードが原因で、WindowsまたはCLRがメモリの構造について行ういくつかの主要な仮定に違反する何かが発生したことです。つまり、理論的には、CLRがメモリ内に存在するアプリドメインを追跡するために使用する構造そのものが破損している可能性があります。CSEを引き起こすものの種類は、一般に、物事が壊滅的に間違っていることを示しています。

そうは言っても、オフレコで、場合によっては、特定の例外から続行しても安全であると判断できる場合があります。EXCEPTION_STACK_OVERFLOWたとえば、はおそらく回復可能であり、通常、Windowsが何かを台無しにする前に潜在EXCEPTION_ACCESS_VIOLATIONなバグを見つけたことを示します。そもそもCSEをスローしているコードについてどれだけ知っているかに応じて、リスクを冒しても構わないと思っているかどうかはあなた次第です。

于 2012-05-25T23:28:50.743 に答える