作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在 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/
我是一名优秀的程序员,十分优秀!