dram.me

异常vs.判断

补遗

  1. 对于类似运维类需要快速编写且很快丢弃的代码来说,异常处理是必须的。不然,业务逻辑代码中需要添加大量错误判断、错误提示以及错误处理代码,非常影响代码编写的速度。如果不加错误处理相关代码,则程序出错时无从分析。—— 2017-09-28

  2. 可靠性要求较高的业务场景,对于异常有不同的态度。一种是Go的思路,错误显式处理,不支持异常。另一种是Erlang的思路,有异常机制,通过supervisor机制保证进程群整体可靠性。—— 2017-09-28

这两天python-list上有条关于什么时候用异常的讨论线索,在这

不长,稍微整理了一下。

几个缩写语:

异常的一些好处:

try:
    x = 3 / y
except ZeroDivisionError:
    x = 0

if y != 0:
    x = 3 / y
else:
    x = 0

如果除以0的操作出现得不频繁的话,速度上异常会快一点,因为它少了一步判断操作。

if os.path.exists(filename):
    f = open(filenmae)

上面的代码中,在if判断和open函数打开文件之间,可能文件被删除,从这一点上说,异常更加保险。

如果我们乘坐google这架时光机器,我们还可以去旁听一下2003年的那场讨论

如果耐心看下去,你会看到如下代码,哈。

try:
    igniteKerosene()
except ExplosionError:
    handleExplosionCase()