1
我有一個簡單的遞歸階乘程序。這個練習的要點是處理異常。我們一直實行有沒有負數的侷限性,並沒有數量大於12C++ try catch throw
{
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」,程序就會啓動一個無限循環。我如何編碼檢查並確保它確實是用戶正在輸入的號碼?
謝謝。
關於如何檢查輸入有效性的問題被無數次地回答!您只需檢查流是否處於良好狀態。如果沒有,您將重置流並忽略該字符。搜索問題在哪裏回答。另外,不要對非例外情況使用異常,並且總是拋出從std :: exception中派生的東西:一旦你試圖找到異常來自哪裏,而不是從'std :: exception'派生的東西,在一個有幾百萬行代碼的程序中,你會發現查看'what()'返回的內容是非常有用的! –
不太清楚如何甚至搜索除關鍵詞像try,throw,catch,異常處理。沒有考慮檢查有效性。謝謝。 – HanH1113