C++中try catch处理异常问题
是这样一个情况
int main()
{
float score; //成绩应该在0到100之间
cout < < "Enter score : ";
cin > > score;
//这里,如果输入的不是浮点型的数据,或者输入的是浮点型数据,但是又大于100,怎么样来提示错误并且回到输入那里呢?
}
能用try catch实现吗?
麻烦说的详细一点,初学有很多不太明白的地方
[解决办法]
while(true)
{
cout < < "Enter score: ";
cin> > score;
if(cin.bad()||cin.fail())
{
cout < < "Input bad data,try again! " < <endl;
cin.clear(); //错误输入会致使cin状态改变,必须重置
continue;
}
else
{
if ((score> 0) && (score < 100))
{
break;
}
else
{
cout < < "score must between 0 and 100, try again ; ) " < <endl;
continue;
}
}
}
while(true)
{
cout < < "Enter score: ";
try
{
cin> > score;
if(cin.bad()||cin.fail())
{
throw runtime_error( "Input bad data,try again!\n ");
}
else
{
if (!((score> 0) && (score < 100)))
throw runtime_error( "score must between 0 and 100, try again!\n ");
break;
}
}
catch(runtime_error err)
{
cout < <err.what();
}
}