精品C++浓缩精华知识点---异常

exception异常

c++的开空间new与c语言开空间malloc的巨大不同是new失败会抛异常

c语言遇到越界等内存错误会发生崩溃。不是严重的内存错误会返回错误码

抛异常throw

当程序遇到解决不了的错误,扔出异常提醒程序员处理。throw可以抛出任何类型的对象。示例如下

捕获异常 try catch

抛出异常后必须进行捕获,捕获的对象类型需要和抛出的对象类型相同,类似于函数传参

try有抛异常的函数,然后catch (throw的对象)。如上图,出现异常后,函数后面的代码不会执行。当异常被捕获后,代码可以正常执行。到main函数执行结束,如果还有异常没有被捕获就会程序终止。

被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那一个。

为了因异常未捕获导致程序终止,在捕获异常的最后使用catch(…)将所有未捕获异常都捕获

抛出派生类对象,用基类捕获

异常安全

当new对象后,抛出异常,执行流就会跳转到catch捕获的地方,而不会进行后面的delete释放,引发内存泄漏的异常安全。

在构造和析构的过程中不要抛异常

C++11 中新增的noexcept,表示不会抛异常

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值