C++异常处理基础
基本概念 异常是指 程序运行时的反常行为,这些行为超出了函数正常功能的范围。 异常处理机制是将 异常检测与异常处理进行相隔离 ,程序一部分负责异常检测,另一部分负责异常处理,符合高内聚低耦合的程序设计,异常检测和异常处理由信息携带异常信息的异常类进行通信。 C++ 语言中针对异常处理提供了throw 和 try... catch语句块两种语法, 通过这两个语法实现机制组合来实现异常的处理。 抛出异常: 异常检测部分通过抛出 (throwing) 一条表达式来引发 (raised) 一个异常,表示它遇到了异常 。 形式: Throw 表达式; 表达 式的类型就是异常的类型, 异常捕捉严格按照类型匹配,它不允许相容类型的隐式转换 。 栈展开 当执行一个throw时,跟着throw后面的语句不再执行,此时程序开始寻找catch处理模块,寻找处理代码的过程与函数调用过程刚好相反,寻找过程如下: 编译器首先寻找该异常的函数匹配的catch子句,如果没有则终止该函数,并在调用该函数的函数中继续寻找。如果函数没有找到与之匹配catch子句,这个新函数也被终止,继续寻找调用它的函数,以此类推,沿着程序的执行路径逐层回退,直到找到适当类型的catch子句,以上过程被称为 栈展开 (stack unwinding)。 如果最终还是没找到与之匹配的catch子句,程序将会转到