【问题标题】:When an exception is thrown out of a (create/copy/move) constructor when throwing a previous exception, why is not std::terminate() called?当抛出前一个异常时从(创建/复制/移动)构造函数中抛出异常时,为什么不调用 std::terminate() ?
【发布时间】:2021-08-27 02:00:47
【问题描述】:

当抛出前一个异常时从(创建/复制/移动)构造函数中抛出异常,为什么不调用std::terminate()?是不是在前一个异常被捕获之前处理前一个异常的中断,必然导致std::terminate()

【问题讨论】:

    标签: c++ exception


    【解决方案1】:

    不,只有在完成异常对象的初始化之后(并且直到完成对异常的处理程序的激活),才认为异常未被捕获。 如果异常被重新抛出,则从重新抛出的角度来看,它被认为是未被捕获的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2019-07-11
      相关资源
      最近更新 更多