异常处理中的问题

一、C++异常处理机制可以实现:
1、允许从异常抛出点把任何数量的信息以类型的方式传递到异常处理器;
2、对于没有抛出任何异常的代码段,不会带来任何额外的时间和空间的开销;
3、保证所抛出的任何一个异常都能被适当的处理器捕获;
4、通过一种组合方式可以使用编写出处理一组异常的处理器;
5、能够直接应用于多线程的程序中。
二、异常处理的一般语法:
try {/* 代码段 */ throw()} catch(){}
三、C++进行异常处理时,会保存每一个throw语句抛出的异常对象类型和每一个catch子句的参数类型信息,其目的就是在运行时保证一场处理对象和异常处理器的类型匹配。
四、构造和析构函数中产生的异常:
1、如果在构造函数中抛出异常,不会引发析构函数的调用。会造成内存泄露问题,使用auto_ptr指针解决,起作用就是在析构时自动删除该指针所指对象。
2、如果是析构函数产生抛出异常,应在析构函数内部捕获它。
3、全局对象在程序开始运行前被构造,因此如果构造函数中有异常抛出,将永远不会被捕捉,析构函数也相同,此异常只有造作系统才能捕获,应用程序无法捕获。
五、使用构造函数默认参数时,如果函数很少使用默认值,那么指定默认值会危害程序,使用时应慎之又慎。
六、unexpected()函数是记录错误并调用terminate()函数。当函数时机抛出异常类型与函数原型的异常规格说明不一致时,就会调用unexpected函数,并抛出unexpected异常,该函数不捕获异常。使用set_unexpected函数能够改变unexpected函数的行为。
七、terminate()函数的作用是记录错误,释放已知系统的资源并调用abort()函数,abort()函数可以不用调用正常的终止函数而直接从程序中退出。可以将其理解为exit()函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值