【文档说明】Python程序设计教程-10_异常处理.pptx,共(27)页,305.098 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2393.html
以下为本文档部分文字说明:
Python3程序设计主讲教师:10异常处理软件工程师系列Python3程序设计第10章异常处理本章内容异常处理概述PYTHON的异常类异常处理机制抛出异常断言与上下文管理自定义异常Python的异常处理机制使得程序运行时出现的问题以统一的方式进行处理,增加了程序的稳定性和可读性
,规范了程序的设计风格,提高了程序质量。软件工程师系列Python3程序设计10.1异常处理概述异常的概念异常(Exception)就是程序在运行过程中发生的,由于硬件故障、软件设计错误、运行环境不满足等原因导致的程序错误。比如网
络中断、文件找不到等代码运行时如果发生了异常,将生成代表该异常的一个对象,并交由Python解释器寻找相应的代码来处理这一异常。Python异常处理优点异常处理代码和正常执行的程序代码分离多个异常统一处理,具有灵活性可以从try-except之间的代码段中快速定位异常出现的位
置软件工程师系列Python3程序设计10.1异常处理概述异常示例1#ex1001.py2weekday=["Mon","Tues","Weds",,"Thurs","Fri","Sat","Sun"]3pr
int(weekday[2])4print(weekday[7])try:weekday=["Mon","Tues","Wed","Thurs","Fri","Satur","Sun"]print(weekday[2])p
rint(weekday[7])exceptIndexError:print("列表索引可能超出范围")软件工程师系列Python3程序设计10.2Python的异常类Python中所有的异常类都是Exception的子类。1.NameError尝试访问一个未声明的变量,会引发N
ameError异常。2.ZeroDivisionError当除数为零的时候,会引发ZeroDivisionError异常。3.IndexError当引用序列中不存在的索引时,会引引发IndexError异常。4.KeyError当使用映射中
不存在的键时,会引发Keyerror异常。软件工程师系列Python3程序设计10.2Python的异常类Python中所有的异常类都是Exception的子类。5.AttributeError当尝试访问未知的对象属性时,会引发Attribu
teError异常。6.SyntaxError当解释器发现语法错误时,会引发SyntaxError异常。7.FileNotFoundError试图打开不存在的文件时,会引发FileNotFoundError
异常。软件工程师系列Python3程序设计10.3异常处理机制(1)程序执行过程中如果出现异常,会自动生成一个异常对象,该异常对象被提交给Python解释器,这个过程称为抛出异常。抛出异常也可以由用户程序自行定义。
(2)当Python解释器接收到异常对象时,会寻找处理这一异常的代码并处理,这一过程叫捕获异常。(3)如果Python解释器找不到可以处理异常的方法,则运行时系统终止,应用程序退出。软件工程师系列Python3程序设计10.3异常处理机制tr
y-except语句用于处理异常,帮助用户准确定位异常发生的位置和原因。格式如下。try:语句块exceptExceptionName1:异常处理代码1exceptExceptionName2:异常处理代码2……软件工程师系列Python3程序设计10.3异常处理机制try-
except语句(1)try语句指定捕获异常的范围,由try所限定的代码块中的语句在执行过程中,可能会生成异常对象并抛出。(2)except语句每个try代码块必须有一个或多个except语句,用于处理try代码块中所生成的异常。except语句后的参数指明它能够捕获的异常类型。e
xcept块中包含的是异常处理的代码。例10-3基本的异常处理示例。软件工程师系列Python3程序设计10.3异常处理机制else语句和finally语句完整的异常处理结构还可以包括else语句和finally语句。try:语句块exceptExcepti
onName:异常处理代码……#except可以有多条语句else:无异常发生时的语句块finally:必须处理的语句块软件工程师系列Python3程序设计10.3异常处理机制else语句和finally语句1
.else语句与循环中的else语句类似,当try语句没有捕获到任何异常信息,将不执行except语句块,而是执行else语句块。2.finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其他部
分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常,finally块中的语句都会被执行。例10-4else语句示例。例10-5finally语句示例。软件工程师系列Python3程序设计10.
3异常处理机制捕获所有的异常为了解决程序中会可能存在多处错误情况,可以在except语句中不指明异常型,这样它就可以处理任何类型的异常。异常处理可以不断细化。例8-6通过except语句捕获所有的异常。在exce
pt语句后使用Exception类。由于Exception类是所有异常类的父类,因此可以捕获所有的异常。定义一个Exception的对象result(任意合法的标识符)用于接收异常处理对象,从而输出异常信息。因为程序
已经捕获了异常信息,并不会再出现因为异常而退出的情况。例8-7使用Exception类的对象捕获所有的异常。软件工程师系列Python3程序设计10.3异常处理机制捕获所有的异常软件工程师系列Python3程序设计10.4抛出异常在Python中,除了程序运行出现错误时会引发异
常外,也可以使用raise语句主动抛出异常,抛主要的应用场景是用户自定义异常。raise语句使用raise语句能显示地抛出异常,基本格式如下。raise异常类#抛出异常,并隐式地创建类对象raise异常类对象#抛出异常,创建异常类的实例对象raise#重新抛出刚刚发生的异常软件工程师系列P
ython3程序设计10.4抛出异常1.使用类名引发异常当raise语句指定异常的类名时,会创建该类的实例对象,然后引发异常。2.使用异常类的实例引发异常通过显式地创建异常类的实例,直接使用该实例对象来引发异常。3.传递异常不带任何参数的
raise语句,可以再次引发刚刚发生过的异常,作用就是向外传递异常。4.指定异常的描述信息当使用raise语句抛出异常时,还可以给异常类指定描述信息。软件工程师系列Python3程序设计10.4抛出异常抛出异常示例用户的应用程序中也可
以抛出异常,但需要生成异常对象。生成异常对象一般都是通过raise语句实现的。例10-9拟现金支付功能,当支付额度大于5000时,抛出ValueError异常,当额度低于5000时,按照额度的10%扣税。软件工程师系列Python3程序设计10.5断言与上下文管理两种特殊的异常处理方式,在形
式上比异常处理结构简单,能够满足简单的异常处理和条件确认,并且可以和标准的异常处理结构结合使用。断言assert语句又称作断言语句,指的是用户期望满足指定的条件。当用户定义的约束条件不满足的时候,它会触发Assert
ionError异常。assert逻辑表达式,description在上面格式中,assert后面是一个逻辑表达式,相当于条件。description是可选的,通常是一个字符串。>>>flag=True>>>assertflag==False,"flag初始值错误"软件工程师系列Python
3程序设计10.5断言与上下文管理上下文管理使用上下文管理语句with可以自动管理资源,代码块执行完后,自动还原进入该代码块之前的现场或上下文。不论何种原因跳出with块,也不论是否发生异常,总能
保证资源被正确释放,简化了工作。多用于打开文件、连接网络、连接数据库等场合。with表达式[asvariable]:with语句块软件工程师系列Python3程序设计10.5断言与上下文管理上下文管理例如,下面的代码在文件操作时使用with
上下文管理语句,当文件处理完以后,将会自动关闭。fname="d:\\pythonfile36\\aaaa.txt"withopen(fname)asfile:forlineinfile:print(line
,end="")软件工程师系列Python3程序设计10.6自定义异常应用场景某个应用所特有的运行错误,需要编程人员根据程序的逻辑在用户程序中创建用户自定义的异常类和异常对象。用来处理程序中可能产生的逻辑错误,
使得这种错误能够被系统及时识别并处理,而不致扩散产生更大的影响,从而使用户程序更为强健,有更好的容错性能,并使整个系统更加安全稳定。创建用户自定义异常需要完成如下的工作。(1)声明一个新的异常类,使之以Exception类或其他某个已经
存在的系统异常类或用户异常类为父类。(2)为新的异常类定义属性和方法,或重载父类的属性和方法,使这些属性和方法能够体现该类所对应的错误的信息。软件工程师系列Python3程序设计8.6自定义异常应用场景某个应用所
特有的运行错误,需要编程人员根据程序的逻辑在用户程序中创建用户自定义的异常类和异常对象。用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识别并处理,而不致扩散产生更大的影响,从而使用户程序更为强健,有更好的容错性能,并使整个系统
更加安全稳定。创建用户自定义异常需要完成如下的工作。(1)声明一个新的异常类,使之以Exception类或其他某个已经存在的系统异常类或用户异常类为父类。(2)为新的异常类定义属性和方法,或重载父类的属性和
方法,使这些属性和方法能够体现该类所对应的错误的信息。软件工程师系列Python3程序设计10.6自定义异常例10-11个用户自定义异常的示例。代码包括3部分第1部分是关于异常类的定义,该类继承了Exception类,第2部分代码是自定义异常的业务逻辑,模拟当支
取金额大于500时,报告异常;第3部分是测试代码。软件工程师系列Python3程序设计软件工程师系列Python3程序设计小结异常(Exception)就是程序在运行过程中发生的,由于硬件故障、软件设计错误、运行环境不满
足等原因导致的程序错误事件。Python中所有的异常类都是Exception的子类。Python常用的内置异常类包括NameError、ZeroDivisionError、IndexError、KeyError、Attribu
teError、SyntaxError、FileNotFoundError等。Python通过try-excep-else-finally语句处理异常,帮助用户准确定位异常发生的位置和原因。软件工程师系列Python3程序设计小结通过在except语句中
不指明异常型来处理任何类型的异常,为了能区分来自不同语句的异常,在except语句后使用Exception类,并定义一个Exception的对象用于接收异常处理对象,从而输出异常信息。Python使
用raise语句主动抛出异常,抛出异常主要的应用场景是用户自定义异常。assert语句又称作断言语句,用于处理在形式上比较简单的异常。使用上下文管理语句with可以自动管理资源,多用于打开文件、连接网络、连接数据库等场合。软件工程师
系列Python3程序设计作业:(1)定义一个Circle类,其中有求面积的方法,当半径小于0时,抛出一个用户自定义异常。(2)从键盘输入一个整数,求100除以它的商,并显示。要求对从键盘输入的数值进
行异常处理。软件工程师系列Python3程序设计