3

どこかで c0000005 例外 (アクセス違反) をスローし、サービスがリサイクルされるまで Web サービスをクラッシュさせるネイティブ dll を使用しています。例外をキャッチする方法はありますか?

4

3 に答える 3

4

私は他の人に同意します...問題を修正しますが、コードを継承し、本番環境で予期しない違反をキャッチしたい場合があります。

.net 4+ では、HandleProcessCorruptedStateExceptions 属性を追加すると、キャッチできる例外として出力されます。コール スタックはそれほど有用ではありませんが、何もないよりはましです。

C#

[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
public void SomeCSharpMethod()
try
{
  // call managed code
}
catch (Exception ex)
{
  Console.WriteLine("Exception");
}

C++

vector<int> myValues;
int a = myValues[1];
于 2012-07-13T12:58:38.793 に答える
3

Microsoft SEH 例外ハンドラーを使用して例外をキャッチできますが、実際には問題を修正する必要があります。

乾杯 & hth.,

于 2011-08-11T17:12:43.723 に答える
2

これをキャッチしないでください。バグを修正します。

0xc0000005の NT エラー コードですSTATUS_ACCESS_VIOLATION。これは、プログラムが不適切なポインター逆参照を行ったことを意味します。非常に簡単に言えば、これは、プログラムが激しくクラッシュし、回復の試みが誤った方向に進んだことを意味します。

サードパーティの DLL だとおっしゃっていることは承知していますが、少なくとも問題をデバッグして理解する必要があります。DLL に不正な入力を渡しているか、正しく初期化していないなど、単純なことかもしれません。それができない場合は、DLL の作成者に連絡するか、DLL への依存を排除​​することを検討してください。

于 2011-08-11T17:40:01.493 に答える