3

私たちは、C#/.NET プロジェクトでいくつかのレガシー DLL を使用しています。レガシ コードの一部の例外をキャッチできず、アプリケーションがクラッシュするのはなぜですか? 標準の .NET 例外との違いは何ですか?

ありがとう。

4

1 に答える 1

1

Jeffrey Ritcher は、彼の壮大な「C# による CLR」で次のように述べています。一部のアンマネージ コードの障害は、.Net ランタイム (CLR) によって「破損状態の例外」(CSE) と見なされます。通常 (後述)、これらの例外は、私たち人間にはわかりません。finally次のような障害のいずれかが発生すると、ブロックも実行されません。

  • アクセス違反
  • 違法な指示
  • スタックオーバーフロー
  • ページエラー

ただし、HandleProcessCorruptedStateExceptionsAttribute属性とSecurityCriticalAttribute属性を、CSE が発生すると予想される特定のメソッドに適用することはできます。try...catchこのメソッド内で、CSE をキャッチするブロックをコーディングできます。

詳細については、次の記事を参照してください: http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

于 2012-07-16T15:22:14.303 に答える