Boostテストライブラリ: 実行モニター イントロダクション イントロダクション Boostテストライブラリの実行モニター
はユーザの作成した関数を呼出し、面倒なエラー検出からユーザを解放す
るものである。実行モニター を使用するには boost::execution_monitorから派
生したクラスを作成し、int execution_monitor::function()をオーバー
ライトする。モニター関数を開始するには、
execution_monitor::execute( timeout )メンバ関数を呼び出す。実行モニターの実装において、すべてのシンボルはネームスペースboost以下
に配置されている。 利益エラー探知関数を決められた方法で実行し、統一形式でエラーを通知する。 boost::execution_monitorの詳細boost::execution_monitorはいくつかの種 類のシグナルや例外を、統一的に検知・報告し、種々のエラーをboost::execution_exceptionに変換して呼び出し側に返す。 使用法:
効果: try/catchブロック内にて execution_monitor::function()を呼び出しを行うのだが、この関数が詳細 のわからない、プラットフォーム依存のエラー検知コードを含む場合がある。 キャッチされていない例外、ハードウェアまたはソフトウェアシグナル、そ の他の例外が発生した場合には、boost::execution_exceptionを発 生する。 execution_monitor::execute() は the execution_monitor::function()がエラーとして非ゼロ値を返すことを想定していない。 返り値:
execution_monitor::function()が返す整数値。
boost::execution_exceptionの詳細class execution_exception { public: enum error_code { cpp_exception_error, // note (1) 参照 system_error, // note (2) 参照 timeout_error, // いくつかのプラットフォームのみ検出可能 user_fatal_error, // ユーザによって報告された致命的エラー system_fatal_error // note (2) を見よ }; error_code code() const; char const what() const; }; Note 1: キャッチされていないC++例外のみがエラーとして扱われる。 アプリケーション内で例外をキャッチしている場合、その例外は boost::execution_monitorには到 達しない。 Note 2: これらのエラーは、UNIXシグナルまたはWindows構造化例外を含む。 これらの多くはハードウェアトラップが原因で起きる。 何がfatal_system_exceptionで何が単なる
system_exceptionであるかは実装次第である。 致命的エラーが起きるの
は、実行を継続するのが不適当であるスタックオーバーフローやアドレッ
シング例外など、マシンが破損状態である場合が多い。
実行モニターコンパイル実行モニターを単独で使用するときには、 プロジェクトにexecution_monitor.cppをイ ンクルードする。これは他のすべてのBoostテストライブラリコンポーネ ントの一部として提供されている。 サンプル実行モニター を使用した例については プログラム実行モニターまたは ユニットテストフレームワークを見よ。 関連情報関数を呼び出す際、その関数がユーザまた はシステム例外を発生していないことを確認しなければならない場合はよく ある。また、統一形式での例外の報告もうってつけであろう。 設計時には常に、使用できるメモリが全くない、またはほとんどない状態になり得ることに気をつけるべきであろう。 設計Boostテストライブラリ設計ドキュメントでは、実行モニターとその他のコンポーネントとの関連性について述べている。 |