この辺りにも同様の質問があると思いますが、見つかりません。
例外の階層全体をスローする可能性のあるいくつかの関数があるとします。たとえば、N種類の例外クラスがあるとします。
さて、 N ブロックで同じコードを数回書く代わりに、これらすべての例外を処理する良い方法はありcatch
ますか?
私がこれを達成する(非常に醜い)方法は、マクロを使用することです。他のアイデア?
すべての関数は、異なる入出力パラメーターと戻りタイプを備えています
編集
はい、すべての例外は同じ基本クラスを持っています-それは階層です。ただし、クラスが異なれば、追加情報も異なります。
例:
try
{
object->execute( ... );
}
catch( type1& ex )
{
// ...
}
//...
catch( typeN& ex )
{
// ...
}
// some other code
// and again:
try
{
object->do_something_else( ... );
}
catch( type1& ex )
{
// ...
}
//...
catch( typeN& ex )
{
// ...
}
// and so on