現在、リファクタリングしようとしているコードがいくつかあります。例外の大規模なセットには、すべての例外に共通のコードと、特定の例外タイプごとに個別に処理する必要のある特定のコードが含まれています。catch
各ブロックの共通部分を取り除く方法を見つけようとしています。1つのアイデアは、次のようにすることです。
try {
/* Stuff that may fail */
} catch( const std::exception & ) {
/* do common part here */
try { throw; }
catch( const exception1 & ) {
/* do stuff for exception1 here */
}
catch( const exception2 & ) {
/* do stuff for exception2 here */
}
}
しかし、これはやや醜いように私を襲います。
この共通論理を除外するためのより良い方法はありますか、それとも実際にこの試みを完全に回避する理由がありますか?