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.5.3 报告错误

让我们考虑另外一个问题:在检查一系列参数后,一旦发现了一个错误,你应该如何做?有时,你可以返回一个“错误值”,例如:

如上所示,我们可以让被调函数进行详细检查,同时让调用者按需要处理错误。看上去这种方法是可行的。但在某些情况下,这种方法会带来很多问题使得它实际上不能被接受:

·所有调用者和被调函数都需要进行检查。调用者要进行的检查可能很简单,但还必须要编写这段代码,并决定在错误发生时候如何进行处理。

·调用者可能会忘记做错误检查。这可能导致程序在运行时出现不可预测问题。

·许多函数并没有可以用作标记错误信息的额外返回值。例如,一个用于从输入设备读入整数的函数(例如cin的操作符>>)的返回值可以是任意整数。因此不能用一个专门的整数来表示错误信息。

对上面程序中的第二个例子,若调用者忘记了错误检查,这会导致某些不可预见问题。例如,

你看出错误在哪里了么?问题就是缺少了错误检查。因为没有明显的错误代码,这类错误往往很难被发现。

试一试

测试函数的不同输入和返回值。输出函数area1、area2、area3和ratio的值。尝试插入各种测试程序直到所有错误都被检测到。如何才能知道所有错误都被找到了呢?这不是一个脑筋急转弯问题,在本例中,你可以通过输入有效的参数检测所有的错误。 ...

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