thedevil5032
2012-12-16 09:19:32 +08:00
聊聊自己实践的经验:
1. try ... except, 如果只是偶尔发生异常(except), 速度上比 if ... else 快.
2. '''You shouldn't throw exceptions for things that happen all the time. Then they'd be "ordinaries".''' 如果某件事结果总是这样的(假设为A), 那么你就不需要抛出异常. 因为 A 就是常态.
3. 可预见, 可 handle 的当然可以利用异常解决啊, 这应该是设计 EAFP 的初衷之一吧?
比如, 一段代码读取文件, 但是可能传过来的文件名实际上是不存在的, 那么这时用户实际上需要创建一个新文件.
try :
readFile()
except IOError : # 有时确实需要查文档, 或者通过试错来找出可能的异常. 另外的时候 except Exception 也可以.
createFile()
针对不存在的 Key 或者两个对象相加, 我觉得首先应该从程序的逻辑上考虑能不能消除这样的可能性. 从代码上解决, 而不是留给后面的代码去判断(我的理解中异常也算是一种判断).
如果不能消除, 那么就根据正常情况和异常情况出现的概率决定用 try 或者 if 吧. 因为 try 在正常情况下比 if 快, if 在异常情况下比 try 快.
这时我的一些想法, 欢迎讨论.