实验内容:
使用异常处理机制,循环输入字符串,如果出现‘boom’或者’gun’则显示异常为违禁品,如果出现‘alcohol’则显示异常为危险品。
#include<iostream>
#include<string>
using namespace std;
void chazhao(string Str)throw(string,int,double)//可扔出多种类型异常,用‘,’隔开
{
string first("boom");
string second("gun");
string third("alcohol");
string::size_type idx,idy,idz;
idx=Str.find(first);
idy=Str.find(second);
idz=Str.find(third);
int i=0;
double e=0.0;
int a;
if(idx!=string::npos||idy!=string::npos)//判断是否属于违禁品
a=1;
if(idz!=string::npos)//判断是否属于危险品
a=2;
if(a==1||a==2&&idz!=string::npos)//判断是否既属于危险品也属于违禁品
a=3;
//不同情况扔出不同异常类型
switch(a){
case 1:throw(Str);break;
case 2:throw(i);break;
case 3:throw(e);break;
default: cout<<"没有危险!"<<endl;break;
}
}
int main()
{
do{
string Str;
cout<<"请输入一串字符串:"<<endl;
cin>>Str;
//检查块
try
{
chazhao(Str);
}
//不同异常类型不同处理机制
catch(string)
{
cout<<"违禁品!"<<endl;
}
catch(int)
{
cout<<"危险品!"<<endl;
}
catch(double)
{
cout<<"危险品和违禁品!"<<endl;
}
}while(1);
return 0;
}