异常机制
异常处理并不意味着需要写显示的try和catch。异常安全的代码,可以没有任何try和catch
异常安全的概念:异常安全是指当异常发生时,既不会发生资源泄漏,系统也不会处于不一致的状态。
内存分配。如果new出错,按照C++,一般会得到异常bad_alloc,对象的构造也就失败,在catch捕捉到这个异常之前,所有栈上对象会全部被析构,资源全部被自动清理。
办法 :适当组织好代码,利用好RAII,可以实现代码短,清晰,统一在外层某地方处理异常
通常会记日志,或在界面。
异常问题
异常当然不是一个完美的特性。
异常违反可“你不用就不需要付出代价”的原则,只要开启了异常,即使不使用异常你编译出二进制代码通常也会膨胀
异常比较隐蔽,不容易看出来那些地方会发生异常和发生什么异常
如果一个函数声明了不会抛出异常,结果却抛出了异常,C++运行时会调用std::terminate来终止应用程序
使用异常的理解
会描述到一些不使用异常,也不使用错误码的错误处理方式,异常是渗透在C++中的标准错误处理方式。标准库的错误处理方式就是异常。其中不仅包括运行时错误,甚至包括一些逻辑错误
处理