1格式
try
{
}
catch( type1 param1 )
{
}
catch( type2 param2 )
{
}
catch( type3 param3 )
{
}
……
catch(...)
{
}
1。catch中类型名是必须 的,参数名是可选的
2。throw的类型和 catch的类型必须完全匹配,不能自动转换
3。catch(...)表示默认的异常处理,如果前面都没有catch到,则选择这个默认处理
……
2。使用异常的方法
可以把多个异常组成族系,有2种方式,异常枚举族系和异常派生层次结构
A。异常每局族系
enum FileErrors{ nonExist, wrongFormat, diskSeekError, ...};
try
{
throw nonExist
}
catch( FileErrors fe )
{
switch( fe )
{
case nonExist:
//
case wrongFormat:
//
case diskSeekError:
//
}
}
B。异常派生层次结构
class FileErrors{};
class NonExist:public FileErrors{};
class WrongFormat :public FileErrors{};
class DiskSeekError :publicFileErrors{};
try
{
throw WrongFormat;
}
catch( NonExist:public )
{
}
catch(WrongFormat )
{
}
catch( DiskSeekError )
{
}
catch( FileErrors{};)
{
}
基类可以捕获派生类的异常,所以基类药放在最后,防止不能访问派生类异常的情况
注:抛出的是派生的类对象/者指针,异常处理的类型是基类对象/指针,也能捕获异常