C/C++学习----第六章 异常处理

第六章 异常处理

    确定程序出错时,执行的代码,称之为异常处理程序。三个关键词:try, throw 和catch。程序中的异常都有一个唯一的名字,可以通过创建异常类来定义一个异常。在程序发生异常时,许多情况下需要指定关于该异常的附加信息:一种解决方案是向以常类中加入成员变量,以及把参数赋予成员的构造函数,当程序捕获到这个异常时,通过检查它的成员变量,以确定有关该异常起因的更多信息。

class myexcept{

public:

int value;

myexcept(int i){

value =i;

}

}; //定义异常类

function(){

    throw myexcept(5);

}

void main()

{

try{

  function();

}

catch (out_of_memory & e)

{

  cout<<”exception value is ”<<e.value;//异常处理过程

}

}

在一个catch中捕获多处异常:

enum fileexception {open, read, write, close};

void func()

{

    throw fileexception(open);

}

void main()

{

    try {

       func();

    }

    catch(fileexception value)

    {

       switch(value)

       {

       case open :

           cout<<"open error"<<endl; break;

       case read:

           cout<<" read error"<<endl; break;

       case write:

           cout<<" write error"<<endl; break;

       case close:

           cout<<" close error"<<endl; break;

       default: break;

       }

       exit(1);

    }

}

 

标准异常exception类结构图:

exception

bad_alloc

bab_cast

bab_typeid

logic_error

ios::base_failure

runtime_error

bab_exception

domain_error

invalid_argument

length_error

out_of_range

range_error

overfloe_error

underflow_error

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


new 失败时,抛出bad_alloc异常;当程序非预期的异常时,抛出bab_exception异常;

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pony12

助力1000篇OpenDDS文

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值