在哪些情况下,以下两个代码不相同?代码与try-catch-rethrow等效于代码w/o try-catch吗?
{
// 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到this answer of mine的意见提示的,对于上面的代码是不等于,没有进一步的解释。
编辑他们确实是不同的。取决于是否在运行时发现异常处理程序(某些catch
阻塞堆栈的较高层),将在后者中完成堆栈取消卷绕,但不一定取决于前者。
*是否存在它们不相同的情况? – user2079303
@ user2079303这正是我的问题。 – Walter
哦,我明白了。我只看过问他们什么时候不是同等的问题,这意味着存在这种情况。我想知道@ Cheersandhth.-Alf指的是什么。 – user2079303