抛出catch(...)是按值还是按引用抛出

时间:2016-04-20 08:37:21

标签: c++

我的老板非常优雅地回答了这个问题{/ 3}。

但这让我想到了一些事情(希望能弥补我以前的不好问题),是吗

catch(...){
    throw;
}

通过(即采用深层复制)或引用重新抛出捕获的异常?

1 个答案:

答案 0 :(得分:9)

标准说:

  

没有操作数的throw-expression重新抛出当前处理的异常。使用现有临时值重新激活该例外;没有创建新的临时异常对象。

- ISO / IEC 14882:2011第15.1节。 8

换句话说,它只是继续使用原始异常对象进行异常传播。我想这类似于“通过引用”的含义。