タグ

c++とboost.exceptionに関するcrafのブックマーク (2)

  • Boost.Exceptionの紹介。 - How to disappear completely

    Boost.Exceptionの紹介。 どうも。宮崎のヌーさんから紹介にあずかりました北海道の魔法少女です。 この記事はBoost Advent Calendar 2011の参加記事です。 今回は、Boost.Exceptionについて紹介します。 はじめに。 Boost.Exceptionとは。 Boostのライブラリの一つで、C++における例外ハンドリングを扱います。 Introductionによると、Boost.Exceptionの目的は、例外クラス階層のデザインを容易にし、さらに例外ハンドリングとエラーレポートのコーディングを支援する、らしいです。 従来の例外処理 従来の例外処理では、例外をスローする側で エラーに対して適切な型で例外オブジェクト生成して、 それに、発生したエラーについてのデータを突っ込んで スローします。 そして、上位のコンテキストでそれをキャッチしたら 例外の型

    Boost.Exceptionの紹介。 - How to disappear completely
  • 任意の expression に透過的に hook を仕掛けるようなマクロが書けるのではありませぬか? - Cry’s Diary

    以下のコードでやっていることの説明. EXCEPTION_HOOK((expr))と書いておけば, (expr) という C++ の式を実行したら急に例外が来たので……というときに, call stack のようなもので殴られた跡 (この hook が仕掛けられている場所に関する情報) を boost::exception に乗せていきます. call stack の生成ぐらい言語でサポートして欲しいよね,うんうん.終わり. Microsoft Visual C++ 2010 と GCC 4.5.0 で動作を確認済みです. 工夫として, EXCEPTION_HOOK((expr))という文字列が式 expr と同等な C++ の expression として透過的に機能するように見せかけてあります.つまり,たとえば std::string s("42"); int i = EXCEPTIO

    任意の expression に透過的に hook を仕掛けるようなマクロが書けるのではありませぬか? - Cry’s Diary
  • 1