以下情况下,以下两个代码不等价?
{
// some code, may throw and/or have side effects
}
try {
// same code as above
} catch(...) {
throw;
}
编辑:为了澄清,我对(i)违背上述模式的偏差(例如,在 catch 块中使用更多代码),以及(ii)邀请关于正确使用 try-catch 块的言论不感兴趣。
我正在寻找一份符合 C ++ 标准的合格答案。这个问题是由 Cheers and hth. - Alf 在评论 我的这个答案 时提出的,他在没有进一步解释的情况下声明上述代码是不等价的。
编辑:它们确实不同。后者将执行堆栈展开,但前者不一定会在运行时找到异常处理程序(堆栈中的某个 catch 块)。