2011-12-12 11 views
2

私はいくつかの古いC数学ライブラリに対してBoost.Testを使ってユニットテストを書いています。いくつかの指定された入力に対してInteger Division By Zeroシステム例外を発生させることが知られている関数の1つ。それが望ましい動作だとしましょう。私はこのケースに対して否定的なテストを書いてみたいと思います。Boost.Testライブラリを使用したゼロ除算による整数除算の処理方法?

BOOST_REQUIRE_THROW(statement, exception);は、C++スタイルの例外ではありません(このマクロは内部でtry {} catch {}を使用しています)。

システムレベルで障害が発生すると予想されるケースを適切に処理する方法は何ですか?

+0

Windowsの場合、構造化例外処理(SEH)を使用してdivを0でキャッチすることができます。 –

+0

Windows OSですか? – lapk

+0

あなたはどのOSで作業していますか? – Lalaland

答えて

1

Windows版なので、_set_se_translator() Windows APIを調べることをおすすめします。これは、C++ catchで構造化例外を処理することを可能にします。

ハンドラをインストールするなどの方法がありますが、これは最小のプログラミング労力でC++例外のように一様な例外処理を可能にします。

+0

私はこれをもっと深く見ていきたいと思います。 Visual Studioのプロジェクトオプションで "Enable C++ exceptions"を "Yes with SEH Exceptions(/ EHa)"に設定することで同様の効果が得られると思います。 – Mickey