gpt4 book ai didi

c++ - 如何在 Try 中声明变量并在 Catch 中访问它?

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:53 24 4
gpt4 key购买 nike

我正在 try/catch block 中创建我的类的一个对象,并希望在出现异常时在 catch block 中访问它。即使对象创建正常,我也无法在 catch block 中访问它,因为它在 block 外声明。

 try {
MyObject ob(arg1,arg2); //this can trow exception

ob.func1(); //this also can throw exception

} catch (std::exception& ex){
//I want to access ob here if it was constructed properly and get the reason why func1() failed
}

我可以使用嵌套的 try/catch block 来解决这个问题,但是有没有其他方法可以解决这个问题

try {
MyObject ob(arg1,arg2); //this can trow exception
try {

ob.func1(); //this also can throw exception
} catch(std::exception& ex) {
//object was constructed ok, so I can access reason/state why the operation failed
}
} catch (std::exception& ex){
//object failed to construct
}

最佳答案

不,你不能这样做。无法从同一级别的 catch block 访问此变量。

解决方案是停止使用异常作为流量控制机制——它们不是——而是按原样使用它们,这是异常情况的指示——在这种情况下,抛出什么并不重要。

关于c++ - 如何在 Try 中声明变量并在 Catch 中访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38529311/

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