异常或错误消息

时间:2014-06-27 23:40:48

标签: c++

我在设计一个返回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 ++没有一种机制来提醒程序员函数抛出错误并且必须被调用者捕获。

您建议使用哪种类型的设计来处理错误?提前感谢你。

1 个答案:

答案 0 :(得分:0)

如果错误不得忽略 - 请使用throw-catch。

如果错误可以忽略(虽然看起来不是你的情况),你有两个选择:

  1. 为错误代码
  2. 使用单独的pass-by-reference参数
  3. 返回错误代码(或success的代码)并使用pass-by-reference参数返回实际结果