在哪些情況下,以下兩個代碼不相同?代碼與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