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.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

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

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

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

管理Kubernetes

Brendan Burns, Craig Tracey
Python编程入门与实战

Python编程入门与实战

Posts & Telecom Press, Fabrizio Romano

Publisher Resources

ISBN: 9787111562252