C++_异常

错误处理
1.终止程序(段错误等)
2.返回错误码
3.返回合法值,让程序处于某种非法状态
4.调用一个预先设置的出错时调用的函数——回调函数
在一个程序中,都应该尽量不要因为错误而终止程序,引入异常处理来处理一个函数自己无法处理的错误。

异常
当一个函数发现自己无法处理的错误时抛出异常,让函数的调用者直接或间接的处理这个问题。
异常对象类型与catch说明符的类型必须一致;
1.可以从非const到const转换
2.可以从派生类到基类的转换。
3.可以将数组转换为数组指针,函数转换为函数指针。
4.异常可以重新抛出,若单个catch不能完全处理一个异常,可以校正处理再给外层的调用链函数来处理。

异常的抛出和捕获
1.异常是通过抛出对象而引发的,该对象的类型决定了应该激活哪个处理代码
2.被选中的处理代码调用链中与该对象类型匹配且离抛出异常位置最近的那一个。
3.抛出异常后会释放局部存储对象,所以被抛出的对象也就还给了系统,throw表达式会初始化一个抛出特殊的异常对对象副本(匿名对象),异常对象由编译管理,异常对象在传给对应的catch处理后撤销。

栈展开
抛出异常时,先暂停当前函数的执行,开始查找匹配的catch子句。
首先看throw在不在catch块内部,如果没有则退出当前函数栈,继续在调用韩素华的栈中查找
达到main函数的栈,还没有匹配的catch,则会终止程序。

异常在构造函数中,会导致对象不完整,不完整或没有完全初始化。
异常在析构函数中,可能导致内存泄漏,句柄未关闭等。

猜你喜欢

转载自blog.csdn.net/cute_shuai/article/details/80444564