一、定义
执行一个函数的过程中发现异常,可以不用在本函数内立即进行处理,而是抛出该异常,让函数
的调用者直接或间接处理这个问题。
c++中异常处理机制有3个模块组成:try(检查),throw(抛出),catch(捕获)
二、使用
异常捕获的匹配规则:
try块里面抛出的那种类型异常,则catch里面捕获哪种异常,一般情况下,类型必须完全匹配,但
以下3中情况可以进行类型转换:
1、允许从非const对象到const的转换
即throw一个非const对象,catch一个const对象
2、允许从派生类类型到基类类型的转换
即throw一个派生类对象,catch一个基类对象
3、将数组转换为指向数组类型的指针,函数转换为指向函数类型的指针
举例:
void divide(int x,int y)//异常抛出
{
if (y == 0)
{
throw x;
}
cout<<(x/y)<<endl;
}
void Mydivide(int x,int y)
{
try
{
divide(x,y);
}
catch(int e)
{
cout<<e<<"除以0"<<endl;
}
catch(...)//接收异常后可以不处理,直接抛出
{
cout<<"其他未知类型异常"<<endl;
throw ;
}
}
int main()
{
Mydivide(10,0);
Mydivide(100,10);
}
欢迎各位指出不足之处