1

最近、ソフトウェアのエラーをキャッチするために、いくつかのベクトル化された例外処理を実装しました。これは、vc6からvs2005に変換したばかりなので特に便利です。STLライブラリの使用に関していくつかの問題が発生しています(通常、すべきでないことをしている人)。ベクトル化された例外ハンドラーを使用して、これらのエラーをキャッチしようとしています。

ただし、これは呼び出されないようです。代わりに、これらのエラーはMicrosoft VisualStudioCランタイムライブラリによって内部的に処理されます。

私の質問は;

ランタイムエラーチェックをオフにして、例外をVEハンドラーに渡す方法はありますか?

ありがとうリッチ

4

4 に答える 4

2
于 2009-08-25T14:15:55.063 に答える
0

追加の実行時チェックをオフにすることができます。ただし、これがキャッチするすべてのエラーがクラッシュにつながるわけではなく、傍受することができます。

補足:これらのチェックは多くの場合、かなりのパフォーマンスを消費し、デフォルトでは、リリースビルドではオフになりません。

于 2009-08-25T13:58:23.433 に答える
0

少し前にこの問題に遭遇しましたが、ランタイムで何をしているのかを理解するのに少し時間がかかりました。MSDN の「以前のバージョンの Visual C++ からの移行」を少なくとも 2 回読むことをお勧めします。次に、「C ライブラリの拡張、パート I: 境界チェック インターフェイス (ISO/IEC TR 24731-1)」をお読みください。後者は、ほとんどのパラメーター チェック機能が基づいている標準です。

彼らが何をしようとしているのかを理解したら、プロジェクト設定で_CRT_SECURE_NO_DEPRECATE_SECURE_SCL、およびを定義するだけです。_SECURE_SCL_THROWS次に、プロジェクトで [ Enable C++ Exceptions][Yes with SEH Exceptions (/EHa)]に設定され、[ Basic Runtime Checks]が [ Default]に設定されていることを確認します。少なくとも、それが現在私たちのために働いていることです。ただし、VC6 で作成した誤ったコードを削除するのに時間がかかりました。

あなたができる最も重要なことは、数週間を確保して、さまざまなオプションとマクロが何をするかを実際に掘り下げることです. 次に、コードで何が機能するかを理解します。私たちはこれを十分に早期に行っておらず、「悪いビルド」がエンジニアリングから抜け出してしまうと、大きな打撃を受けました。

于 2009-08-25T14:21:21.013 に答える