【发布时间】:2014-06-27 23:40:47
【问题描述】:
我在设计一个返回双精度值的函数时遇到了难题。
函数正在执行一些计算,设计如下:
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 .... 行并希望尽快从函数返回。然而,由于它被设计为返回双精度,我不能简单地使用返回表达式。我考虑过使用 goto 语句来结束函数或抛出错误,而不是使用错误消息字符串。但是如果我抛出错误并忘记捕获它,它只会终止程序,不幸的是 C++ 没有提醒程序员函数抛出错误并且必须被调用者捕获的机制。
您会推荐哪种类型的设计来处理错误?提前谢谢你。
【问题讨论】:
-
您和您的团队必须就政策达成一致并坚持下去。两种方式各有利弊。
-
这正是例外的用途。
-
你可以抛出一个异常,或者如果异常对你不可用,像
boost::optional这样的东西可能会做你想做的事。 -
程序员为什么需要提醒?当然,如果她的程序终止,她会发现有问题....
标签: c++