August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
vector能够抛出异常,并且我们建议,当一个函数不能按要求执行操作时,它应该以抛出异常的方式向其调用者进行报告(第5章)。现在,是时候介绍如何处理由vector操作或者我们调用的其他函数抛出的异常了。一种幼稚的回答是——“使用try语句块捕获异常,输出一条出错消息并结束程序的运行”——这一方法对于大多数系统而言过于简单了。
编程的一个基本原则是,如果我们获取了资源,那么我们还必须负责——直接或间接地——将其归还给负责管理这些资源的系统。资源的例子包括:
·内存;
·锁;
·句柄;
·线程句柄;
·套接字;
·窗口。
本质上,资源可以被视为这样一类东西:资源的使用者必须向系统中的“资源管理者”归还(释放)资源,并由“资源管理者”负责资源的回收。最简单的例子就是自由存储区的内存空间,我们通过new获得内存空间,而通过delete归还内存空间。例如:
如在12.4.6节中所学,我们不得不时刻提醒自己释放内存,但这通常不是那么容易的一件事情。当我们学习异常处理时,资源泄漏问题变得更为普遍。特别地,我们需要小心处理那些显式使用new操作并将所得指针赋给局部变量的代码,如suspicious()。
对于vector这样负责释放一个资源的对象,我们称之为资源的所有者(owner)或句柄(handle)。