2009-06-28 17 views
12

すべてのブースト例外はstd :: exceptionから派生していますか?そうでない場合、それらはすべて基本例外クラスから派生していますか?ブースト例外

答えて

10

the documentationboost::exceptionは、std::exceptionを継承しません。

FAQに理由が説明されています。

ただし、this pageではBoost例外を正しく使用する方法が説明されています。

+3

Boost.Exceptionは、ストア可能な例外と再スロー可能な例外のフレームワークです。ブーストライブラリから直接スローされません。 FAQ http://www.boost.org/doc/libs/1_39_0/libs/exception/doc/frequently_asked_questions.htmlは 'boost :: exception'が' std :: exception'を継承しない理由を説明しています。 –

1

私はそう信じています。非標準::例外ベースの何かをスローするブーストライブラリについて考えることはできません。

7

例外処理が無効になっている構成をサポートするために、「良いブースト市民」ライブラリはboost::throw_exceptionを使用してスローする必要があります。

boost::throw_exception関数は、渡された例外のタイプはまた、デフォルトでstd::exception(その要件が満たされない場合、バージョン1.37.0またはその近傍boost::throw_exceptionのようにコンパイルエラーを発行します。)、放出された例外から公的に導出することを必要としますboost::throw_exceptionを使用すると、boost::exceptionに由来します。

ただし、Boostライブラリがboost:throw_exceptionで例外をスローするか、またはstd::exceptionから派生させる必要はありません。

関連する問題