3.3.2 传统错误检测方法的缺点

传统的错误检测方法是过去广泛使用的,这种做法有一个缺点:由于需要检测错误的地方非常多,最终导致程序中充斥着大量的错误检测代码,这些“喧宾夺主”的代码使得程序 控制结构复杂,程序逻辑难以理解,代码也难维护。例如,如果每次调用函数都要检测其返 回的错误码,会导致程序中存在大量如下形式的代码片段:

  1. x = doOneThing()
  2. if x == ERROR:
  3. 异常处理代码
  4. ......

或者更简练(但更难读)地写成:

  1. if doOneThing() == ERROR:
  2. 异常处理代码
  3. ......

假如我们解决某个问题的算法是顺序执行三个步骤,用三个函数调用表示如下:

  1. doStep1()
  2. doStep2()
  3. doStep3()

这段代码清晰地表明了要做的事情是什么,逻辑非常容易理解。但是当我们加入大量的

错误检测代码之后,可能写出如下代码:

  1. if doStep1() == ERROR
  2. 错误处理代码 1
  3. elif doStep2() == ERROR:
  4. 错误处理代码 2
  5. elif doStep3() == ERROR:
  6. 错误处理代码 3

从这段代码可见,原先很清晰的连续的三个步骤与错误检测代码纠缠在一起,导致解决 问题的关键算法变得非常隐晦。当需要检测的异常情形(对应着函数返回的错误码)很多的 时候,程序逻辑会深深地掩埋在这些错误检测代码之中。