【第七天】C++异常的抛出、捕获以及标准异常库 目录一、异常的概述二、异常的抛出、捕获三、栈解旋四、异常的接口声明五、异常变量的生命周期1、以普通对象 接异常值2、以对象指针 接异常值3、对象引用 接异常值(推荐使用)六、异常的多态七、标准异常库八、编写自己的异常一、异常的概述异常:是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要 读取的文件不存在,空指针,内存不足,访问非法内存等等)。(异常是一个类。)异常处理就是处理程序中的错误。基本思想:让一个函数在发现了自己无法处理的错误时抛出(throw)一个异常,然后它的(直接或者间接)调用者能够处理这个问题。即将问题检测和问题处理相分离。遇到错误 抛出异常 捕获异常。c++异常机制相比C语言异常处理的优势:C语言中处理异常的函数返回值标识可以忽略,但异常不可忽略。(忽略异常 程序结束)整型返回值没有任何语义信息。而异常却包含语义信息,有时你从类名就能 够体现出来二、异常的抛出、捕获涉及到三个关键字:try、catch、throw。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关键字来完成的。catch:在您想要处理问题的地方,通过异常处理程序捕获异常。catch关键字用于捕获异常。try:try块中放置可能抛出异常的代码,try 块中的代码被称为保护代码,块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。try/catch 语句的语法如下所示:try { throw 异常值; } catch(异常类型1 异常值1) { 处理异常的代码1; } catch(异常类型2 异常值2) { 处理异常的代码2; } catch(...)//任何异常都捕获 { 处理异常的代码3; }具体案例:若有异常则通过thow 操作创建一个异常对象并抛出。将可能抛出异常的程序段放到try块之中。catch子句会根据出现的先后顺序被检查,匹配的catch语句捕获并处理异常(或继续抛出异常),如果在try 段执行期间没有引起异常,那么跟在try后面的catch字句就不会执行。如果匹配的处理未找到,则运行函数terminate将自动被调用,其缺省功能调用abort终止程序。处理不了的异常,可以在 catch的最后一个分支,使用throw,向上抛。以除法为例: