上QQ阅读APP看书,第一时间看更新
2.14 异常
程序和代码会出错,所出的差错也不相同。
有些错误的发生是因为代码写得不够细心,比如,把调用函数的函数名写错了,或者提供了错误的参数,或者变量名写错了大小写等问题的发生,是粗心造成的。
但是,还有一些情况是可能发生、无法避免且无法预测什么时候发生的。比如,我们尝试到硬盘上读取一个文件,但是这个文件不存在,或者文件是损坏的,或者访问账号的权限被意外取消了;我们想访问一个网址,但是网址不存在,或者网络意外瘫痪了;我们让用户输入他们的年龄的数值,结果有人输入“你猜”这类问题,代码逻辑无法处理,如果没有合适的机制介入,程序就会崩溃,无法进行任何后续的逻辑处理。
我们无法避免异常的发生,但是可以在异常发生的时候做好相应的善后处理,也就是异常处理。
代码无法处理的问题,在业务逻辑中不一定是很严重的问题。比如,根据路径去读取一个不存在的文件,这对于代码来说是无法处理的问题,会抛出异常,但是这对于业务逻辑来说,有可能并不是什么大不了的事情。代码本身并不会为我们做决定,它只会忠实地把处理不了的情况呈现出来,让程序员来决定该如何“救场”。
程序崩溃会让开发人员和用户都很难堪。对于开发人员来说,这意味着代码对于可能出现的某些问题连基本的处理都没有,暴露出了思路不周全的问题。对于用户来说,可能需要重新启动程序,可能会有数据丢失,并且,程序崩溃的信息对于用户来说可能没有任何帮助。有了异常处理的机制,我们有了善后和抢救的机会,并且可以把业务逻辑和异常处理逻辑分开,便于阅读和代码维护。
而对于自动化测试而言,异常和异常处理更是非常重要的一个方面,因为这关系到如何确定一个测试用例的执行结果是成功还是失败。