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에서 파생 된 것을 throw하십시오. 일단 std :: exception에서 파생되지 않은 예외가 발생한 위치를 찾으려고하면 몇 백만 줄의 코드를 가진 프로그램에서'what()'이 반환하는 것을 보는 것이 매우 유용하다는 것을 알 수 있습니다! –
시도, 던지기, 잡기, 예외 처리 같은 핵심 단어 이외의 다른 검색 방법도 확실하지 않았습니다. 유효성 검사를 생각하지 않았습니다. 감사. – HanH1113