0

请问你能检查这个代码吗?try/catch/throw 有什么问题?

#include<iostream>
using namespace std;

int get_input();

int main() {

    int number, base_in, base_out;
    bool pass = 1;

    while(pass) {

        double number, base_in, base_out;

        try {

            cout << "What's your number? ";
            number = get_input();

            pass = 0;

        }
        catch(problem_type()) {
            cout << "Please, write inputs should be integer" << endl;
        }

    }

    return 0;
}


int get_input(bool target = 1) {

    double n;
    cin >> n;

    if(n != (int)n) throw problem_type();

    if(target) {
        if(n<1) throw problem_type();
    }

    return (int)n;

}
4

2 回答 2

3

你按类型捕捉。喜欢

catch(const problem_type&){ }

也就是说,如果problem_type是类型。我在任何地方都看不到定义……</p>

于 2012-10-02T16:38:10.143 回答
0

当抛出异常时,您将获得一个包含异常信息的内存对象......所以有必要将其视为catch( const Type& error )

为什么作为参考?想想在某些情况下可能存在的混乱状态,因此制作副本会增加复杂性和处理时间,您可能会丢失重要信息。所以这就是为什么我们把它作为参考。

只需“指向”原始数据。

于 2012-10-02T17:09:47.217 回答