我有一个简单的递归阶乘程序。本练习的重点是处理异常。我们被强加了没有负数和没有大于 12 的数字的限制。
{
int factorial(int);
int number = 0;
string s;
while(number != -1)
{
cout << "Please enter a number 1 - 12 " <<endl;
cout << "or -1 to quit the program: ";
try{
cin >> number;
if (number < 0 || number > 12)
throw number;
else
cout << number << " factorial is: " << factorial(number)<<"\n" << endl;
}catch(int number)
{
cout<< "Your number violates the rules; " <<number<<" is either negative or greater than 12.\n"<<endl;
}
}
}
int factorial(int number) {
int temp;
if(number <=1)
return 1;
temp = number * factorial(number - 1);
return temp;
}
我的错误处理似乎工作正常,这对我来说是一个新概念。但是,我想更好地处理错误。例如,当我输入任何不是数字的东西时,比如说“p”,程序就会开始无限循环。我如何编写代码来检查并确保它确实是用户输入的数字?
谢谢。
最佳答案
添加另一个条件来测试输入。例如,您可以这样做。
...
try{
cin >> number;
if (!cin) {
//error msg here
break;
} else if (number < 0 || number > 12)
...
关于C++ try catch 抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798763/