重新抛出指针捕获的异常

Aid*_*yan 1 c++ exception

在C++中,以下示例之间有什么区别?

重新抛出指针:

catch (CException* ex)
{
    throw ex;
}
Run Code Online (Sandbox Code Playgroud)

简单的重新投掷:

catch (CException* ex)
{
    throw;
}
Run Code Online (Sandbox Code Playgroud)

捕获重新抛出时,堆栈跟踪是否会有所不同?

Meh*_*ari 7

是.基本上,你是在第一种情况下自己抛出物体.看起来你自己throw ex在行中生成了异常.在第二种情况下,您只是让原始对象在调用堆栈中上升(从而保留原始调用堆栈),这些是不同的.通常,你应该使用throw;.