代码之家  ›  专栏  ›  技术社区  ›  Aidan Ryan

正在重新引发指针捕获的异常

  •  1
  • Aidan Ryan  · 技术社区  · 16 年前

    在C++中,下面的例子有什么不同?

    catch (CException* ex)
    {
        throw ex;
    }
    

    简单再投掷 :

    catch (CException* ex)
    {
        throw;
    }
    

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

    2 回复  |  直到 16 年前
        1
  •  7
  •   Mehrdad Afshari    16 年前

    throw ex throw;

        2
  •  -2
  •   martsbradley    16 年前

    我认为这是一个性能差异。第二个版本不会生成异常的临时副本。第一个将创建一个副本,因此seond是一种方法。

    您可以创建一个简单的异常类并进行尝试,让构造函数/复制构造函数在触发时打印到控制台。这样你就会看到区别了。