首页 Python程序设计-第九章

Python程序设计-第九章

举报
开通vip

Python程序设计-第九章nullPython程序设计 Programming in PythonPython程序设计 Programming in Python主讲:庞胜利第九章 异常处理*第九章 异常处理异常处理 异常捕获 try...finally 抛出异常 异常机制使用 异常处理异常处理异常处理是一种出错处理的机制。当程序中出现某些 异常的 状况的时候,异常就发生了。例如,当想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,不小心除了0。上述这些情况可以使用异常来处理。 假如程序中有一些无效的(产生异常)语句,会...

Python程序设计-第九章
nullPython程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 Programming in PythonPython程序设计 Programming in Python主讲:庞胜利第九章 异常处理*第九章 异常处理异常处理 异常捕获 try...finally 抛出异常 异常机制使用 异常处理异常处理异常处理是一种出错处理的机制。当程序中出现某些 异常的 状况的时候,异常就发生了。例如,当想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,不小心除了0。上述这些情况可以使用异常来处理。 假如程序中有一些无效的(产生异常)语句,会怎么样呢?Python会引发并告知那里有一个错误,从而处理这样的情况。>>> print 2/0 Traceback (most recent call last): File "", line 1, in ZeroDivisionError: integer division or modulo by zero错误信息错误信息 异常信息分为两个部分,冒号前面的是异常类型,之后是对此的简单说明。其它的信息则指出在程序的什么地方出错了。 当异常产生时,如果没有代码来处理它,Python对其进行缺省处理,输出一些异常信息并终止程序。>>> print 2/0 Traceback (most recent call last): File "", line 1, in ZeroDivisionError: integer division or modulo by zero异常捕获异常捕获程序在执行的过程中产生异常,但不希望程序终止执行,这时就需要用try和except 语句对异常进行捕获然后处理。比如,提示用户输入文件名,然后打开文件。若文件不存在,我们也不想程序就此崩溃,处理异常处理就成了关键的部分。 异常捕获异常捕获 首先执行statements1,如果没有异常发生,那么一切正常,就像没有try语句一样,继续执行后面的语句 如果在执行statements1时发生了异常,那么就把异常类型和except语句后面的ExceptionType比较 如果相同就执行statements2;并继续执行异常处理后的所有语句 如果不相同就直接返回,把异常抛给函数的调用者,然后一级一级的向上抛,直到有try语句捕获了异常 如果没有任何try语句进行有效的捕获,那么程序就异常退出try: except ExceptionType: 异常捕获异常捕获可见,异常是另一种函数返回方式,C语言或者其他没有异常机制的语言,函数只有通过返回值指明函数出错,所以每一级函数都要检查函数的返回值。 异常机制就是提供除了返回值之外的另一种出错处理方法。这种方法支持错误的向上冒泡,如果某一级函数不知道该怎么处理错误,那么就不处理,留给更上一级函数处理。大部分库中的模块的出错处理大多数都是抛出异常。异常捕获异常捕获try后面可以跟多种形式的分句: try: except ExceptionType1, e1: except (ExceptionType2, ExceptionType3): except: else: finally: try语句分句形式try语句分句形式try...finallytry...finally finally语句的意思是:无论是否发生异常,还是return语句返回,finally子句statements2都会执行 这种方法适合于释放资源。如果一个函数有多个地方return,那么就要在每一个return之前编写几乎同样的释放资源的代码,如关闭文件、关闭网络连接等等。finally的方法提供了一个函数返回之前,执行一些代码来回收资源,不管函数返回是由于return语句还是由于没有被捕获的异常try: finally: >>> def fun(): ... try: ... print "ok" ... return 1 ... finally: ... print "clean up" ... >>> fun() ok clean up 1 >>>抛出异常抛出异常raise语句用于抛出异常,格式如下: 三个表达式都是可选的,如果一个表达式都没有,raise则把最近的一次异常重新触发,如果没有最近的异常则抛出TypeError的异常 如果至少有一个表达式的话,raise语句则计算表达式而得到三个对象,对于省略的表达式用None填充 如果第一个对象是一个对象实体,则异常的类型就是对象的类型,对象本身是异常的值;第二、三个对象必须为空 如果第一个对象是类,那它就是异常的类型。第二个对象被用来决定异常的值:如果是类的实例对象,则对象就是异常的值;如果是个元组,就作为类构造器的参数列表;如果为None,则空参数传入类构造器,如果为其他单个对象,则作为单个参数传入类构造器。实例对象就会根据参数列表传入类构造器而生成,并作为异常的值。 如果第三个对象存在并不为None,它必须是一个traceback对象,用于跟踪当前发生异常的栈帧(很少用)。raise expression1, expression2, expression3抛出异常抛出异常在抛出异常时,可以是任何对象,用于详细描述错误类型;但一般要求是Exception类的子类 class ShortInputException: '''A user-defined exception class.''' def __init__(self, length, atleast): self.length = length self.atleast = atleast try: s = raw_input('Enter something --> ') if len(s) < 3: raise ShortInputException(len(s), 3) except ShortInputException, x: print 'ShortInputException: The input was of length %d, \ was expecting at least %d' % (x.length, x.atleast) else: print 'No exception was raised.'抛出异常抛出异常在except中,只要ExceptionType和抛出的对象类型一致,就可以捕获这个异常。类型一致指:对象是此类型的一个实例,如果一个对象所属的类继承了其他的类,那么这个对象就可以是多类型的实体,这些类型包括对象所属的类的父类,父类的父类...等 assert语句assert语句Python还包括了assert语句,其实是条件式的raise语句: 如果test计算为假,Python就会触发AssertionError异常:data项是异常对象的值。 assert是附加功能,如果使用-O命令行标志位,就会忽略所有的assert语句,即__debug__为0;系统缺省情况下自动为1assert , ======================== if __debug__: if not : raise AssertionError, 异常使用异常使用抛出和捕获异常提供了一种方便的出错处理机制。函数不用再通过特殊返回值来通知上一级函数(函数的调用者)发生了错误,而是通过raise异常的方式 返回值就是函数正常返回的时候应该返回的东西 这种方法可以加快开发速度,开发初期,可以不用处理任何错误,只按照正常结果进行编码,等原型开发完成后再加入异常处理的代码本章结束,谢谢!本章结束,谢谢!
本文档为【Python程序设计-第九章】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_790360
暂无简介~
格式:ppt
大小:173KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2011-10-08
浏览量:44