例外派

なんだかこんなのがあると便利だろうと思って、作ってみました。


0001 class nested_error : public std::runtime_error {
0002 public:
0003 nested_error( const std::runtime_error& e, const char* szErrmsg ) :
0004 std::runtime_error( std::string( szErrmsg ) + std::string( e.what() ) ) {
0005 }
0006 virtual ~nested_error() {}
0007 };
0008
使い方は、

0001 try{
0002 //...
0003 }catch( std::runtime_error& e ){
0004 throw nested_error( e, "エラー\n原因:" );
0005 }
って感じで。スタックをさかのぼったような感じでエラーが見たいときに使えるんじゃないかと思います。なんでexceptionじゃなくてruntime_errorなんだろう…と自問自答。logic_errorだろうがなんだろうが捕捉したいって思うんで、exceptionにしたほうがよさげです。