如果一个函数有错误的参数,如何防止它返回任何值?

Dan*_*hev 0 c++ function

我确定这个问题已经有人问过了,但我找不到答案。

如果我有一个功能,让我们说:

int Power(int number, int degree){
    if(degree==0){
        return 1;
    }
    return number*Power(number, degree-1);
}
Run Code Online (Sandbox Code Playgroud)

它仅在degree是非负时才起作用int。如何防止使用错误的参数调用此函数?

例如,如果程序员编写cout<<Power(2, -1);,我希望编译器拒绝编译代码并返回某种错误消息(例如“函数 Power 只接受非负整数”)。

在这种情况下,另一种选择是函数不返回任何值。例如:

int Power(int number, unsigned int degree){
    if(degree<0){
        //return nothing
    }
    if(degree==0){
        return 1;
    }
    return number*Power(number, degree-1);
}
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 7

有一个返回值的替代方法:抛出一个值。一个典型的例子:

if(degree<0){
    throw std::invalid_argument("degree may not be negative!");
}
Run Code Online (Sandbox Code Playgroud)

我想让编译器拒绝编译代码

通常,参数在运行时之前是未知的,因此这通常是不可能的。

你的回答做得很好。但我很好奇:'throw' 终止程序并阻止执行 Power() 之后的任何事情。

如果您捕获了抛出的对象,那么您可以在抛出该对象的函数之后立即继续。