try
{
可能出现的异常的部分
}
catch(char * e)
{
e获取到throw抛出的异常
}
#include <iostream>
#include <climits>
using namespace std;
unsigned long returnFactorial(unsigned short num) throw (const char*);
int main()
{
unsigned short num =0;
cout << "请输入一个整数";
while(!(cin >> num )|| (num<1))
{
cin.clear();
cin.ignore(100,'\n');
cout<<"请输入一个整数:\n";
}
cin.ignore(100,'\n');
try
{
unsigned long factorical =returnFactorial(num);//如果该函数抛出异常,直接跳到catch中,try剩下代码块不会执行
cout<< num <<"的阶乘是"<<factorical<<endl;
}
catch(const char *e)
{
cout<< e;
}
return 0;
}
unsigned long returnFactorial(unsigned short num) throw (const char *)
{
unsigned long sum =1 ;
unsigned long max = ULONG_MAX;
for(int i=1;i<=num;i++)
{
sum = sum * i;
max = max /i;
}
if(max < 1)
{
throw "悲催 。。 该该基础太大,计算机无法显示\n";
}
else
{
return sum;
}
}