python异常处理

来源:互联网 发布:火车票网络退票时间 编辑:程序博客网 时间:2024/06/03 17:27

一个合格的python程序员应该熟练处理异常,这是程序健壮的保障。

之前看完《dive into python》,里面很多章节都太浅显。但其行文思路值得借鉴。其中异常处理就介绍的过于简单。

今天看了《python 学习手册第三版》。对异常的讲解非常详细,掌握之后,基本在实际编程中不会为异常而无从下手。

具体参加书的最后一部分。以下为笔记:

try:
     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捕捉应该多通用? 如何把握两者的度?
     什么时候终止程序的运行,什么时候继续?什么时候要向上层继续抛异常,这写都需要对程序的结构
有清晰的认识。
原创粉丝点击