通过值或引用进行throw-in-catch(..)抛出

Does a throw in catch(...) throw by value or by reference

本文关键字:throw-in-catch 抛出 引用      更新时间:2023-10-16

我的老板回答了这个问题为什么。。。(三分)在接球区是否存在?非常优雅。

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

catch(...){
    throw;
}

是否通过(即获取深度副本)或通过reference重新引发捕获的异常?

标准规定:

没有操作数的抛出表达式重新引发当前处理的异常。使用现有的临时异常重新激活异常;不会创建新的临时异常对象。

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

换句话说,它只是用原始异常对象继续异常传播。我想这类似于你所说的"参考"。