在这种情况下显示错误。 C ++

时间:2017-09-09 12:05:29

标签: c++ validation input output return-value

如何在案例中向我的代码客户端显示错误?

以下是某人将使用的功能:

double firstTaskSum(int n, double x)
{
    if(n < 0)
    {
        cout << ("n is invalid! n : " + std::to_string(n) + ". And must be n >= 0.");
        return;
    }

    if(x == 0)
    {
        cout << ("x is invalid! 0 to power of 0 is undefined.");
        return;
    }

    return firstTaskSumUp(0, n, x, 1, 1);
}

当我尝试编译它时会出错,因为它什么都不返回。我该怎么办呢?我不想返回伪变量,因为它们可能是某些输入的实际输出。

使用此类代码时:

double firstTaskSum(int n, double x)
{
    if(n < 0)
    {throw invalid_argument("n is invalid! n : " + std::to_string(n) + ". And must be n >= 0.");}

    if(x == 0)
    {throw invalid_argument("x is invalid! 0 to power of 0 is undefined.");}

    return firstTaskSumUp(0, n, x, 1, 1);
}

这是我得到的: enter image description here

我希望错误输出到控制台并且程序流不会停止。

2 个答案:

答案 0 :(得分:1)

你可以抛出异常:

#include <stdexcept>
using namespace std;

double firstTaskSum(int n, double x)
{
    if (n < 0)
    {
        throw invalid_argument("n must be positive");
    }

    if (x == 0)
    {
        throw invalid_argument("x can't be 0");
    }

    return firstTaskSumUp(0, n, x, 1, 1);
}

答案 1 :(得分:0)

抛出异常的另一个选择是对参数有效性进行函数检查。

if (IsArgumentValid(1, 1))
    firstTaskSum(1, 1);
else
    cout << "Invalid arguments\n";