一个合格的python程序员应该熟练处理异常,这是程序健壮的保障。
之前看完《dive into python》,里面很多章节都太浅显。但其行文思路值得借鉴。其中异常处理就介绍的过于简单。
今天看了《python 学习手册第三版》。对异常的讲解非常详细,掌握之后,基本在实际编程中不会为异常而无从下手。
具体参加书的最后一部分。以下为笔记:
raise <name> <data>
raise <name>
raise
<statements>
except name1:
<statements>
except name2, data: #run if name2 is raised and get extra data
<statements>
except (name3, name4): #either name3 or name4
<statements>
except (name3, name4), data :
<statements>
except: #all other exceptions
<statements>
else:
<statements>
finally:
<statements>
assert <test>, <data> 用来约束用户输入条件,不是用来检测程序内在的错误。
with expression [as variable]:
<with-block>
类异常:
如果except包含超类,会捕捉超类的实例及其子类的实例
建议:用户自定义的类是Exception的子类
重载__repr__ 和 __str__可以自定义自己的异常显示
raise instance
raise class, instance
1、避免使用except空抛异常。因为这个异常会捕捉无关系统异常、甚至程序设计的错误,而这些异常不
应该被捕捉。
2、在异常处理中使用:sys.exc_info() = (type, value , traceback)
3、使用基于类的分类
思考:
except捕捉应该多具体? except捕捉应该多通用? 如何把握两者的度?
什么时候终止程序的运行,什么时候继续?什么时候要向上层继续抛异常,这写都需要对程序的结构
有清晰的认识。