键入错误类型时抛出异常

时间:2017-05-04 05:21:39

标签: c++ exception-handling

我必须编写一个C ++程序,其中一个函数是从键盘读取两个double类型的数字,并添加一个try块以在键入错误的类型时抛出异常。我有使用cin.fail()函数,但它不起作用。

这是我到目前为止所尝试的内容,但如果我输入双倍值,它将不会抛出异常。

#include<iostream>
#include<conio.h>
using namespace std;


int main() 
{

    double j;
    try{
        cin>>j;
        if (cin.fail())
            throw (j);
        else
            cout << "Double Value " << j << endl;  
    }
    catch(double a)
    {
        cout<<"Incompatible Datatype for value"<<a;
    }

}

1 个答案:

答案 0 :(得分:0)

捕获字符串并处理异常怎么样? 以下是一般概念:

string d;

    try{
        cin >> d;
        if ( d.find_first_not_of("0123456789-+.") != string::npos)
        {
            throw std::runtime_error("not an int");
        }
        else if ( ( strtod( d.c_str(),nullptr ) > INT_MAX ) || ( strtod( d.c_str(),nullptr ) < INT_MIN ) )
        {
            throw std::runtime_error(" int overflow");
        }

    }
    catch(const std::exception&d)
    {
        cout << d.what() << endl;
    }