我目前有一些我正在尝试重构的代码。一大组异常有一些用于所有异常的通用代码以及一些需要针对每种特定异常类型单独处理的特定代码。我试图弄清楚如何摆脱每个catch
块中的共同部分。一个想法是这样做:
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 */
}
}
然而,这让我觉得有些难看。
有没有更好的方法来分解这种常见的逻辑,或者实际上有理由完全避免这种尝试?