我在设计一个返回double值的函数时遇到了两难。
该功能正在执行一些计算,其设计如下:
double SimpsonIntegration(const Function& f, float a, float b,int n,std::string& ErrorMessages)
if(n%2!=0)
{
ErrorMessages=ErrorMessages+"Simpson Integration: Number of subintervals must be even number\n";
}else if(n<20||n>100)
{
ErrorMessages=ErrorMessages+"Simpson Integration: Number of subintervals should be between 20 to 100\n");
}
double h=0,x=0,y=0,retVal=0;
我的困境是如果有错误我不想继续加倍h = 0 ....行并希望从函数asap返回。但是,因为它被设计为返回double,所以我不能简单地使用返回表达式。我曾考虑使用goto语句来结束函数或抛出错误而不是使用错误消息字符串。但是如果我抛出错误并忘记捕获它,它将简单地终止程序,不幸的是C ++没有一种机制来提醒程序员函数抛出错误并且必须被调用者捕获。
您建议使用哪种类型的设计来处理错误?提前感谢你。
答案 0 :(得分:0)
如果错误不得忽略 - 请使用throw-catch。
如果错误可以忽略(虽然看起来不是你的情况),你有两个选择:
success
的代码)并使用pass-by-reference参数返回实际结果