C++ 异常或错误消息

C++ 异常或错误消息,c++,C++,我在设计一个返回双精度值的函数时遇到了一个两难的问题 该函数正在执行一些计算,其设计如下: 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 ev

我在设计一个返回双精度值的函数时遇到了一个两难的问题

该函数正在执行一些计算,其设计如下:

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;
double SimpsonIntegration(常量函数&f、浮点a、浮点b、整数n、标准::字符串和错误消息)
如果(n%2!=0)
{
ErrorMessages=ErrorMessages+“辛普森集成:子间隔数必须为偶数\n”;
}否则,如果(n100)
{
ErrorMessages=ErrorMessages+“辛普森集成:子间隔数应在20到100之间\n”);
}
双h=0,x=0,y=0,retVal=0;
我的困境是,如果有错误,我不想继续进行双h=0。。。。行并希望尽快从函数返回。然而,由于它被设计为返回double,我不能简单地使用返回表达式。我考虑过使用goto语句来结束函数或抛出错误,而不是使用错误消息字符串。但是如果我抛出错误而忘记捕捉它,它将简单地终止程序,不幸的是C++没有一种机制来提醒程序员函数抛出错误,必须被调用方捕获。p>
您建议采用哪种类型的设计来处理错误?提前感谢。

如果不能忽略错误-使用抛接球

如果可以忽略某个错误(但似乎不是您的情况),您有两个选择:

  • 对错误代码使用单独的“按引用传递”参数
  • 返回错误代码(或
    success
    )并使用passby reference参数返回实际结果

  • 你和你的团队必须就一项政策达成一致并坚持下去。这两种方法都有优点和缺点。这正是异常的用途。您可以抛出异常,或者如果异常对您不可用,则可以执行类似于
    boost::optional
    的操作。程序员为什么需要提醒?当然,如果她的程序终止,她会发现有问题。。。。