C++12 Exceptions(异常)

C++的异常处理机制允许在运行时捕获和处理错误。当遇到无法预见的问题,如数组越界或文件操作失败时,可以使用`throw`抛出异常对象。异常可以在堆栈中创建,并在函数调用链中向上传播,直到被相应的`catch`块捕获。异常类可以携带详细信息,便于诊断问题。`try-catch`结构用于管理异常处理,其中`try`块包含可能抛出异常的代码,`catch`块则处理匹配的异常类型。在构造函数中抛出异常可能导致内存泄漏,因此需要谨慎处理。
摘要由CSDN通过智能技术生成
  • C++的基本哲学是写的不好的代码不能运行,所以和C比较,C++编译时多了很多检查。
  • 但是总是有在运行时候发生的run-time error ,编译时无法预知。
  • 所以需要C++有一些手段让我们知道有一些不正常事情发生了。

如下例
在这里插入图片描述

  • 这五句话其实每一句都hidden着危机,都有可能发生 run-time error
  • 这些问题不是程序问题,而是外面情况带来的问题。比如 open the file, 这个文件可能不存在,可能这个文件被另外一个进程打开了并且那个进程说它要独占地打开。也有可能这个文件大小得不到,因为这个文件可能实际上是一个网络流,不是真的文件。也有可能根本不是文件,是个设备,Unix和Windows把外部设备当作文件,并且数据流链接的远端可能还在一直写数据,无法得到文件大小,所以第二个impossible
  • List item

上图就叫做异常机制。

在这里插入图片描述

异常的抛出和捕捉

  • List item

在这里插入图片描述

对C++解决问题比较好的方式是用exception, 当这种情况发生的时候我们抛出一个异常,告诉更上层的人说这儿有一个问题,我不能解决这个问题,你得来出面解决。所以可以用一个keyword叫做throw
在这里插入图片描述

比如我们发现一个数组越界了,我们就扔出一个东西,告诉别人这里出问题了。这就叫throw, throw是一个动词,所以如下是一条语句。对于C++来说什么都可以扔,包括object,原始类型都可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值