Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

14.5 资源和异常

vector能够抛出异常,并且我们建议,当一个函数不能按要求执行操作时,它应该以抛出异常的方式向其调用者进行报告(第5章)。现在,是时候介绍如何处理由vector操作或者我们调用的其他函数抛出的异常了。一种幼稚的回答是——“使用try语句块捕获异常,输出一条出错消息并结束程序的运行”——这一方法对于大多数系统而言过于简单了。

编程的一个基本原则是,如果我们获取了资源,那么我们还必须负责——直接或间接地——将其归还给负责管理这些资源的系统。资源的例子包括:

·内存;

·锁;

·句柄;

·线程句柄;

·套接字;

·窗口。

本质上,资源可以被视为这样一类东西:资源的使用者必须向系统中的“资源管理者”归还(释放)资源,并由“资源管理者”负责资源的回收。最简单的例子就是自由存储区的内存空间,我们通过new获得内存空间,而通过delete归还内存空间。例如:

如在12.4.6节中所学,我们不得不时刻提醒自己释放内存,但这通常不是那么容易的一件事情。当我们学习异常处理时,资源泄漏问题变得更为普遍。特别地,我们需要小心处理那些显式使用new操作并将所得指针赋给局部变量的代码,如suspicious()。

对于vector这样负责释放一个资源的对象,我们称之为资源的所有者(owner)或句柄(handle)。

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252