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版)

5.6.1 参数错误

下面是函数area()带异常处理的版本:

如果参数正确,我们会返回计算的面积;否则结束函数area(),并抛出异常,希望这个异常能够被捕获并做出相应错误处理。Bad_area是一个我们定义的新类型。它的目的是作为函数area()中异常的标识,以便被捕获时能够确认异常来自哪里。用户自定义类型(类和枚举)将在第9章讨论。需要注意的是Bad_area{}表示“创建一个Bad_area类型的缺省值对象”。因此throw Bad_area{}表示“创建一个Bad_area类型的对象并抛出它”。

现在我们可以这样写:

首先要注意的是,上面的错误处理针对的是所有对area()的调用,包括主函数里的一次调用和两个通过framed_area()的间接调用。其次,很明显,如何处理错误与检测错误是分离的:main()不知道哪个函数做了throw Bad_area{}动作,area()不知道哪个函数会捕捉它所抛出的Bad_area异常。对于使用了许多库的大程序来说,这一分离非常重要。因为在编程时没有人希望同时对应用程序和库代码进行修改,所以没有人能够“通过在正确位置简单增加几行代码来修正错误”。

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