Visual C ++ 2008では、次のように生成された例外を「キャッチ」したいと思います。
try {
int foo = 20;
::fgetpos(0, (fpos_t*)&foo);
}
//...
キャッチを成功させるために私が行った調整は次のとおりです。
- SEHがアクティブになります(/ eha)
- キャッチを追加しました(...)
- _set_se_translatorベクトルを追加しました。
- SEH構文に追加/調整しました:__ try / __except(EXCEPTION_EXECUTE_HANDLER)
要するに、私は「本の中のすべて」を試しましたが、それでも例外を捕まえることができません。の呼び出しをに置き換える::fgetpos
とint hey = foo / 0
、突然、上記のすべての手法が期待どおりに機能します。ですから、私が扱っている例外は、::fgetpos
どういうわけか「特別な」ものです。
誰かがこの::fgetposエラーがキャッチできないように見える理由と、それを回避する方法を説明できますか?
update VS IDEで実行すると、出力ウィンドウに例外の名前が付けられません。それが言うのはこれだけです:
Microsoft VisualStudioCランタイムライブラリがMyProgram.exeで致命的なエラーを検出しました。
あまり役に立ちません。コマンドラインからコンソールアプリを実行すると、クラッシュダイアログが表示されます。ダイアログの「問題の詳細」セクションには、次の情報が含まれています。
問題イベント名:BEX
例外オフセット:0002fd30
例外コード:c0000417
例外データ:00000000
追加情報1:69ad
追加情報2:69addfb19767b2221c8e3e7a5cd2f4ae
追加情報3:b1ff
追加情報4:b1ffca30cadddc78c19f19b6d150997f