私のプログラムの先頭には、例外ハンドラがあります。
それは、このようなものになります。私はより一般的なアプローチを取るしたいのですが、より多くの例外タイプ、
を取得したよう簡略化された関数テンプレートと同様のcatch節を書くことはできますか?
try{
//majority of program
}
catch(...){
Handle_All_Exceptions();
}
void Handle_All_Exceptions(){
try{throw;}
catch(TypeA const& e){Handle(e) ;}
catch(TypeB const& e){Handle(e) ;}
catch(TypeC const& e){Handle(e) ;}
catch(TypeD const& e){Handle(e) ;}
catch(...) {Handle_Unknown();}
}
void Handle(TypeA const& e){
//...
}
void Handle(TypeB const& e){
//...
}
void Handle(TypeC const& e){
//...
}
void Handle(TypeD const& e){
//...
}
void Handle_Unknown(){
//...
}
を。
汎用プログラミングをHandle_All_Exceptions
にどのように適用できますか?
このようなものは、C++の新しいバージョンでは可能でしょうか?
catch(auto e){Handle(e)};
catch(...){Handle_Unknown();}
例外に共通の基本クラスがありますか? – robert
@robert、いいえ、しかし、私はstd :: exceptionを継承した方が良いアプローチかもしれません。 –
@TrevorHickeyは、基本クラス(http://en.cppreference)のstd :: runtime_errorを考慮することをお勧めします。com/w/cpp/error/runtime_error –