gpt4 book ai didi

c++ - 用于跨类错误传播的嵌套 try/catch block ?

转载 作者:行者123 更新时间:2023-11-28 02:00:06 24 4
gpt4 key购买 nike

我有一个类接口(interface)函数,它按特定顺序在类中实现其他函数:

class Child
{
public:
auto Interface()->bool
{
this->F1(); //I use this just for extra clarity (e.g. not calling global function)
this->F2();
return true;
}
auto F1()->void
{
//Do stuff...
}
auto F2()->void
{
//Do more stuff...
}
};

class Parent
{
public:
Child ChildObj;
auto CallUponChild()->void
{
bool success = ChildObj.Interface();
}
};

我想将“Interface()”实现包装在 try/catch block 中:

auto Interface()->bool
{
try{
this->F1();
this->F2();
}catch(...){
//Handle
}
}

但是,在发生错误时,我希望再次尝试该函数,如果出现错误,我想将错误传播回父类:

auto Interface()->bool
{
int error_count=0;
try{
try{
this->F1();
this->F2();
return true;
}catch(...){
if(error_count<1){this->F1(); this->F2();}
else{throw "Out of tries";}
}
}catch(...){
return false;
}
}

是否正在使用嵌套的 try/catch block ?这是最好的方法吗?

最佳答案

有点像

auto Interface()->bool
{ int error_count=0;
while (error_count < 1) {
try {
this->F1();
this->F2();
return true;
}
catch(...){
// if (error_count >= 1)
// throw; // to throw original exception
++error_count;
}
};
// throw "Out of tries"; // to throw "Out of tries" exception
return false; // to use the boolean result
}

应该足够了。如果 F1() 在您的 catch block 中抛出异常,您的函数将返回 false 而不会增加 error_count

关于c++ - 用于跨类错误传播的嵌套 try/catch block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39921298/

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