August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
让我们考虑另外一个问题:在检查一系列参数后,一旦发现了一个错误,你应该如何做?有时,你可以返回一个“错误值”,例如:
如上所示,我们可以让被调函数进行详细检查,同时让调用者按需要处理错误。看上去这种方法是可行的。但在某些情况下,这种方法会带来很多问题使得它实际上不能被接受:
·所有调用者和被调函数都需要进行检查。调用者要进行的检查可能很简单,但还必须要编写这段代码,并决定在错误发生时候如何进行处理。
·调用者可能会忘记做错误检查。这可能导致程序在运行时出现不可预测问题。
·许多函数并没有可以用作标记错误信息的额外返回值。例如,一个用于从输入设备读入整数的函数(例如cin的操作符>>)的返回值可以是任意整数。因此不能用一个专门的整数来表示错误信息。
对上面程序中的第二个例子,若调用者忘记了错误检查,这会导致某些不可预见问题。例如,
你看出错误在哪里了么?问题就是缺少了错误检查。因为没有明显的错误代码,这类错误往往很难被发现。
试一试
测试函数的不同输入和返回值。输出函数area1、area2、area3和ratio的值。尝试插入各种测试程序直到所有错误都被检测到。如何才能知道所有错误都被找到了呢?这不是一个脑筋急转弯问题,在本例中,你可以通过输入有效的参数检测所有的错误。 ...