1.3.2 特殊情况
作为类的设计者,必须决定如何处理特殊情况并在规范中包含这些决定。方法以及函数的文档应该包含这些决定。
通常,可以用多种方法添加特殊情况。
假设无效情况不会发生。这个假设并不像听起来那么幼稚。方法可以给出一个客户必须遵守的假设(也就是前置条件)。在客户调用这个方法之前必须负责检测这个假设是否被满足。只要客户遵循这个限定,就不会发生无效情况。
忽略无效情况。当给定无效数据时,方法可以什么都不做。然而,这样会让客户对所发生的事情一无所知。
猜测客户的目的。与前面的选择类似,这个选择会给客户带来麻烦。
返回一个代表问题的值。例如,可以返回一个布尔值表示方法成功执行或者失败。
抛出异常。对于C++方法而言,在执行中遇到特殊情况时通常都想要抛出异常。方法可以只是简单地报告问题,而不需要指明需要做什么。异常可以让客户根据自身的特殊情况采取所需的动作。为简单起见,我们认为只有在真正特殊的情况下(没有其他合理的解决方案)方法才应该抛出异常。在C++片段3中将讲述异常。
提示:模块规范的初稿通常会忽略实际上需要考虑的情况。为简单起见,可以在初稿中有意忽略这些内容。当开始编写规范的主要部分时,可以关注这些细节,从而完善规范。