17

.NET とネイティブ コードのコンソール アプリケーションが混在しています。アプリケーション プロセスは、Visual C ランタイム ライブラリの致命的なエラーにより終了します。私は以下を使用していますが、マネージ コードはネイティブ例外をキャッチしません。

  1. トライ/キャッチブロック
  2. AppDomain.UnHandledExption += ...
  3. RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true)AssmblyInfo ファイルで をマークします。

他に何ができますか?

4

2 に答える 2

21

ネイティブ例外は .NET 4 で変更されたため、標準の catch ブロックではキャッチできなくなりました。[HandleProcessCorruptedStateExceptions]例外をキャッチできるように、例外がスローされている関数をマークする必要があります。

詳細はこちらhttp://msdn.microsoft.com/en-us/magazine/dd419661.aspx

その記事のメモに注意してください。たとえば、finally ブロックを実行して終了するというアドバイスに従うのではなく、通常どおりキャッチしたい場合は、構成legacyCorruptedState­­ExceptionsPolicy=trueファイルに追加してください。

于 2012-05-09T13:35:28.670 に答える
-2

() なしでキャッチすると、ネイティブ例外を含む非 CLS 準拠の例外がキャッチされます。

try
{

}
catch
{

}
于 2012-05-09T13:38:40.137 に答える