在 C++ 中,以下示例之间有什么区别?
重新抛出指针:
catch (CException* ex)
{
throw ex;
}
简单的重新抛出:
catch (CException* ex)
{
throw;
}
当re-throw被捕获时,stack trace会不会不同?
最佳答案
是的。基本上,在第一种情况下,你是在自己扔东西。看起来您在 throw ex
行中自己生成了异常。在第二种情况下,您只是让原始对象在调用堆栈中上升(从而保留原始调用堆栈),它们是不同的。通常,您应该使用 throw;
。
关于c++ - 重新抛出指针捕获的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869648/