C++の例外仕様

C++の例外仕様とは

void func(void) throw(A);

のように、関数の投げる例外を明記する記法のこと。

C++ FAQ」には『理由が無い場合は例外仕様を書く』と書かれていたので、あちこちに使っていたのだが、「Exceptional C++ Style」でその欠点を知って全部消した。
欠点の詳細は「Exceptional C++ Style」「C++ Coding Standards」などのHerb Sutter氏によるC++のスタイルガイド本に載っているが、最大の理由はパフォーマンスが低下すること。実際、Borland C++ Compiler 5は例外仕様(例外リスト)をもつクラスをインライン展開してくれない。

教訓#1:例外仕様を決して書いてはならない。
教訓#2:空の例外仕様は除くが、私があなたなら、それさえも避けるだろう。

「Exceptional C++ style」p96より