gpt4 book ai didi

c++ - 将异常对象引用传递给新的异常对象是否安全?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:53 25 4
gpt4 key购买 nike

假设如下:

struct wrapper_exception {
std::runtime_error& err;
wrapper_exception( std::runtime_error& _e ) : err(e) {}
};

try {

throw std::runtime_error("foo");

} catch (std::runtime_error& err) {

throw wrapper_exception( err);
}

问题:wrapper_exception处理后访问runtime_error内部的引用是否安全?

最佳答案

我很想说这是未定义的行为。

标准反复说明异常对象的生命周期在事件处理程序退出时结束,不是通过重新抛出异常,即通过说 throw;

由于您没有重新抛出异常,原始异常对象在 catch block 的末尾过期,您最终得到一个悬空引用,这与抛出一个包含局部变量引用的对象没有什么不同。

关于c++ - 将异常对象引用传递给新的异常对象是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8639990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com