重新抛出const异常引用

tak*_*004 1 c++ exception

我在一个多项选择题中被问到以下程序在做什么:

catch(const std::exception& e){
  throw e;
}
Run Code Online (Sandbox Code Playgroud)

我回答说它是在重新抛出e(答案C).但答案显然是错误的.

那它在做什么?扔一份e(答案D)?

另一个可能的答案是:A)处理异常B)捕获e中的当前堆栈跟踪

谢谢

Max*_*kin 10

throw声明复制了它的参数.这意味着throw e;切片e到它的基类(或任何静态类型e).要重新抛出原始异常使用throw;.