异常处理C++

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{};)
{
}

 

基类可以捕获派生类的异常,所以基类药放在最后,防止不能访问派生类异常的情况

 

注:抛出的是派生的类对象/者指针,异常处理的类型是基类对象/指针,也能捕获异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值