どこかで c0000005 例外 (アクセス違反) をスローし、サービスがリサイクルされるまで Web サービスをクラッシュさせるネイティブ dll を使用しています。例外をキャッチする方法はありますか?
3 に答える
私は他の人に同意します...問題を修正しますが、コードを継承し、本番環境で予期しない違反をキャッチしたい場合があります。
.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];
Microsoft SEH 例外ハンドラーを使用して例外をキャッチできますが、実際には問題を修正する必要があります。
乾杯 & hth.,
これをキャッチしないでください。バグを修正します。
0xc0000005
の NT エラー コードですSTATUS_ACCESS_VIOLATION
。これは、プログラムが不適切なポインター逆参照を行ったことを意味します。非常に簡単に言えば、これは、プログラムが激しくクラッシュし、回復の試みが誤った方向に進んだことを意味します。
サードパーティの DLL だとおっしゃっていることは承知していますが、少なくとも問題をデバッグして理解する必要があります。DLL に不正な入力を渡しているか、正しく初期化していないなど、単純なことかもしれません。それができない場合は、DLL の作成者に連絡するか、DLL への依存を排除することを検討してください。