私たちは、C#/.NET プロジェクトでいくつかのレガシー DLL を使用しています。レガシ コードの一部の例外をキャッチできず、アプリケーションがクラッシュするのはなぜですか? 標準の .NET 例外との違いは何ですか?
ありがとう。
Jeffrey Ritcher は、彼の壮大な「C# による CLR」で次のように述べています。一部のアンマネージ コードの障害は、.Net ランタイム (CLR) によって「破損状態の例外」(CSE) と見なされます。通常 (後述)、これらの例外は、私たち人間にはわかりません。finally
次のような障害のいずれかが発生すると、ブロックも実行されません。
ただし、HandleProcessCorruptedStateExceptionsAttribute属性とSecurityCriticalAttribute属性を、CSE が発生すると予想される特定のメソッドに適用することはできます。try...catch
このメソッド内で、CSE をキャッチするブロックをコーディングできます。
詳細については、次の記事を参照してください: http://msdn.microsoft.com/en-us/magazine/dd419661.aspx