c++ - 重新抛出指针捕获的异常

标签 c++ exception

在 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/

相关文章:

c++ - 嵌套 C++ vector 的重新分配

c++ - aix 7.1 中缺少 getopt.h

haskell - throwE 和 catchE 与 ExceptT monad 在 monadic 堆栈的底部

c++ - 我可以在目录和子目录中搜索头文件吗?

c++ - 将参数传递给自动转换为指针的函数

c++ - 调用在基类中私有(private)的派生类的虚函数时出现访问说明符错误

java - 检查两个整数输入是否在范围内-Java

python - 异常相等性检查 - 使用 Numpy Where 查找抛出异常的索引

java - RunTimeException 无法在 catch block 中处理

c++ - 这种链接异常的实现是如何工作的?