我必须编写一个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;
}
}
答案 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;
}