例外をスローするサードパーティライブラリがあります。だから私はtry/catch(...)で自分のコードをラップすることで、例外についての情報を記録できるようにしました(具体的な詳細はなく、ちょうど起こった)。クラッシュします。クライアントコンピュータでは、ハードウェアがクラッシュし、catch(...)で例外を記録するコードは実行されません。デバッグ/開発マシンでこれを実行すると、デバッグするかどうかを確認するポップアップが表示されます。私はこれを行うと0xC0000005:XXXという場所を読み取っているアクセス違反を報告します。catch(...)を使用してC++例外をキャッチできません
奇妙なことは、古いバージョンのサードパーティ製ライブラリでは、まったく同じコードが例外をキャッチし、例外をログに記録するコードが実行されることです。 (私は同じ状況が発生見VS以内にこれを検証した。)ここで
が実行されている擬似コードです:- は、いくつかの変更がある:
だから私は2つの質問があります私のコードが例外を捕まえることができないように、第三者が図書館をコンパイルしているかもしれません。 (はい、あなたが何を伝えるべきかを知っていれば、私が必要とする修正が必要なものを作り直す機会があります)
私はそれを修正することはできませんこれらの例外をキャッチするために私は何ができますか?私は...の行に沿って考えています... pObjectが割り当て解除されたかどうかを判断する方法はありますか?
これは本当に役に立つ記事であり、実際には私にとって実行可能なソリューションが含まれています...古いライブラリはVS2003で構築しなければならず、新しいライブラリはVS2008向けです。 w/optionをコンパイルするようにライブラリを設定した後、 "Enable C++ Exceptions:Yes SEH Exceptions(/ EHa)"でコードがこのインスタンスをキャッチします。この理由から、私はこの回答に正しい答えを与えています。 しかし、他の回答のいくつかは有効な有用な情報を提供していると言いたいと思います。 –
C++ try/catchでSEH例外を捕まえることは、一般的には悪い考えです。 MSがデフォルトで新しいコンパイラでそれを無効にした理由があります。通常、コンパイラオプションを有効にするのではなく、SEH構造(__try/__ exceptなど)を使用する必要があります。 – jalf
マイケル・ブレイ>問題はありませんが、この種の問題に役立つ多くの回答があると思います。私は他の人にも投票して、この答えの下でそれらを作ることにします。 jalf>確かに。それは彼らが記事で行うことです。 – Klaim