处理零错误

时间:2015-10-23 04:29:52

标签: c++ error-handling

所以我发布代码一段时间后代码运行正常。代码对两个分数执行加法,减法和乘法,然后找出第一个分数是否小于第二个分数,最后在第二个分数上计算分数的小数形式。但我需要抛出一个异常,如果分母为0,构造函数将停止并抛出“无效输入”消息,然后继续下一组输入。

输入

2
2 0 4 5
1 2 3 4

预期输出

Invalid input

5/4 -1/4 3/8 1/24 True
.50 .75

我原以为我可以在int main中执行所有需要的操作,如果构造函数抛出错误,则打印出“Invalid Input”,否则打印出操作。我只是不确定如何使用类,我正在考虑使用“Catch and throw方法”,但我不确定如何从构造函数输出标志。

构造

Rational(int n, int d)
{

        num = n;
        denom = d;

        if (denom == 0) {

            throw overflow_error("Divide by Zero");

        }

        normalize();



}

主要

int main()
{
int case_count, a, b, c, d;
cin >> case_count;

for (int i = 0; i < case_count; ++i) {
    cout << "Case " << i << "\n";
    cin >> a;
    cin >> b;
    cin >> c;
    cin >> d;
    Rational frac1(a, b);
    Rational frac2(c,d);


    Rational frac1(a, b);
    Rational frac2(c, d);
    Rational add;
    Rational sub;
    Rational mult;
    Rational div;
    try {
        add = frac1 + frac2;
        sub = frac1 - frac2;
        mult = frac1 * frac2;
        div = frac1 / frac2;
        cout << add << " ";
        cout << sub << " ";
        cout << mult << " ";
        cout << div << " ";
        cout << (frac1 < frac2) << "\n";
        cout << frac1.toDecimal() << " ";
        cout << frac2.toDecimal() << "\n";

    }
    catch (overflow_error e) {
        cout << e.what();

    }
}

return 0;

}

如果最坏的情况发生,我将只进行int主检查以查看它们中的任何一个是否为0并打印出无效输入。但是它要求构造函数将异常抛出到0分母。

我不确定完整的代码是否需要它有点冗长,但如果你想在这里查看它是一个链接:

Overloading Operator Rational Error

如果需要,我可以发布。真的,我只是在寻找一些伪代码或者如何做到这一点的想法。

0 个答案:

没有答案