C++ プログラミングガイド

uncaught_exception() 関数の呼び出し

捕獲されていない (アクティブな) 例外とは、送出されたがハンドラにまだ受け付けられていない例外を意味します。関数 uncaught_exception() は、捕獲されていない例外が存在する場合は true を返し、存在しない場合は false を返します。

ある例外が捕獲されないために関数が終了したために、他の例外がまだアクティブな状態のままプログラムが停止してしまうことがあります。uncaught_exception() 関数は、このような問題を防ぐために役立ちます。この問題は、スタックの巻き戻しの間に呼び出されたデストラクタが例外を送出する時に最も多く発生します。対策としては、デストラクタ内で例外を送出する前に uncaught_exception()false を返すように設定します (ほかの例外がアクティブな間にデストラクタが例外を送出するためにプログラムが停止することを防ぐには、デストラクタが例外を送出しないですむようにプログラムを設計することもできます)。