2012-05-09 18 views
17

.NETとネイティブコードコンソールアプリケーションが混在しています。 Visual Cランタイムライブラリの致命的なエラーのため、アプリケーションプロセスが終了します。 AssmblyInfoファイル内RuntimeCompatibilityAttribute(WrapNonExceptionThrows = true)をマーキングマネージコードでネイティブ例外をキャッチできません

  1. try/catchブロック
  2. AppDomain.UnHandledExption += ...
  3. :私は次のように使用していたとしても、マネージコードはネイティブの例外をキャッチしません。

他に何ができますか?

答えて

21

ネイティブ例外は.NET 4では標準のキャッチブロックでキャッチできないように変更されています。あなたは、具体的には、それがキャッチできるように例外がスローされている場所に、[HandleProcessCorruptedStateExceptions]というようにマークする必要があります。あなたがそれらをキャッチし、通常ではなく、finallyブロックを実行し、出て行くの彼らのアドバイスに従う、あなたの設定ファイルにlegacyCorruptedState­­ExceptionsPolicy=trueを追加したい場合のように

ここより、http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

、その記事のノートに気をつけろ。

+0

これは私を大きく助けました。どうもありがとうございました。 – Newbee

-2

キャッチなし()は、ネイティブ例外を含む非CLS準拠の例外をキャッチします。

try 
{ 

} 
catch 
{ 

} 
+0

それを試して私のために働かなかった。 – DoronBM

+0

このFxCopルールに基づいてコメントしました.. http://msdn.microsoft.com/en-gb/bb264489.aspx 申し訳ありませんが、動作しません.. – Oscar

関連する問題