精品课件----Python常见异常处理PPT文档格式.pptx
- 文档编号:13165136
- 上传时间:2022-10-07
- 格式:PPTX
- 页数:71
- 大小:840.71KB
精品课件----Python常见异常处理PPT文档格式.pptx
《精品课件----Python常见异常处理PPT文档格式.pptx》由会员分享,可在线阅读,更多相关《精品课件----Python常见异常处理PPT文档格式.pptx(71页珍藏版)》请在冰豆网上搜索。
,异常类,1.NameError尝试访问一个未声明的变量,会引发NameError。
Traceback(mostrecentcalllast):
FileD:
/PythonCode/Chapter09/异常.py,line1,inprint(foo)NameError:
namefooisnotdefined,异常类,2.ZeroDivisionError当除数为零的时候,会引发ZeroDivisionError异常。
/PythonCode/Chapter09/异常.py,line1,in1/0ZeroDivisionError:
divisionbyzero,异常类,3.SyntaxError当解释器发现语法错误时,会引发SyntaxError异常,FileD:
/PythonCode/Chapter09/异常.py,line2foriinlistSyntaxError:
invalidsyntax,异常类,4.IndexError当使用序列中不存在的索引时,会引发IndexError异常,Traceback(mostrecentcalllast):
/PythonCode/Chapter09/异常.py,line2,inlist0IndexError:
listindexoutofrange,异常类,5.KeyError当使用映射中不存在的键时,会引发KeyError异常。
/PythonCode/Chapter09/异常.py,line2,inmyDictserverKeyError:
server,异常类,6.FileNotFoundError试图打开不存在的文件时,会引发FileNotFoundError,Traceback(mostrecentcalllast):
/PythonCode/Chapter09/异常.py,line1,inf=open(test)FileNotFoundError:
test,异常类,7.AttributeError当尝试访问未知对象属性时,会引发AttributeError异常,Traceback(mostrecentcalllast):
/PythonCode/Chapter09/异常.py,line6,inprint(car.name)AttributeError:
Carobjecthasnoattributename,过渡页,01异常简介,02异常类,03异常处理,04抛出异常,05自定义异常,06with和as环境安装器,捕获简单异常,try-except语句定义了监控异常的一段代码,并提供了处理异常的机制。
try:
#语句块except:
#异常处理代码,捕获多个异常,处理多个异常的try-except语句格式如下:
#语句块except异常名称1:
#异常处理代码1except异常名称2:
#异常处理代码,捕获异常的描述信息,当出现多种异常时,为了区分不同的错误信息,可以使用as获取系统反馈的信息。
#获取描述信息except(ZeroDivisionError,ValueError)asresult:
print(捕捉到异常:
%s%result),捕获所有的异常,当程序中出现大量异常时,捕获这些异常是非常麻烦的。
这时,我们可以在except子句中不指明异常的类型,这样,不管发生何种类型的异常,都会执行except里面的处理代码。
没有捕获到异常(else),如果try语句没有捕获到任何的错误信息,就不再执行任何except语句,而是会执行else语句。
终止行为(finally),在程序中,无论是否捕捉到异常,都必须要执行某件事情,例如关闭文件、释放锁等,这时可以提供finally语句处理。
通常情况下,finally用于释放资源。
过渡页,01异常简介,02异常类,03异常处理,04抛出异常,05自定义异常,06with和as环境安装器,raise语句,使用raise语句能显示地触发异常,格式如下:
raise异常类名raise异常类对象raise,引发指定异常类的实例,重新引发刚刚发生的异常,raise语句,1.使用类名引发异常,当raise语句指定异常的类名时,会创建该类的实例对象,然后引发异常。
raiseIndexError,Traceback(mostrecentcalllast):
/异常.py,line1,inraiseIndexErrorIndexError,raise语句,2.使用异常类的实例引发异常,index=IndexError()raiseindex,Traceback(mostrecentcalllast):
/异常.py,line2,inraiseindexIndexError,raise语句,3.传递异常,try:
raiseIndexErrorexcept:
print(出错了)raise,不带任何参数的raise语句,可以再次引发刚刚发生过的异常,作用就是向外传递异常。
出错了FileD:
/异常.py,line2,inraiseIndexErrorIndexError,raise语句,4.指定异常的描述信息,raiseIndexError(索引下标超出范围),Traceback(mostrecentcalllast):
/异常.py,line1,inraiseIndexError(索引下标超出范围)IndexError:
索引下标超出范围,raise语句,5.异常引发异常,try:
numexceptExceptionasexception:
raiseIndexError(下标超出范围)fromexception,使用raise.from可以在异常中抛出另外的异常。
try里面只定义了变量num,会引发NameError异常。
except子句使用raise.from抛出NameError异常后再抛出“下标越界”的异常。
assert语句,assert语句又称作断言,指的是期望用户满足指定的条件。
当用户定义的约束条件不满足的时候,它会触发AssertionError异常,所以assert语句可以当做条件式的raise语句。
assert语句,assert语句格式如下:
assert逻辑表达式,data,assert后面紧跟一个逻辑表达式,相当于条件。
Data通常是一个字符串,当条件为false时作为异常的描述信息。
ifnot逻辑表达式:
raiseAssertionError(data),断言的示例如下:
assert语句,a=0asserta!
=0,a的值不能为0,Traceback(mostrecentcalllast):
/异常.py,line2,inasserta!
=0,a的值不能为0AssertionError:
a的值不能为0,过渡页,01异常简介,02异常类,03异常处理,04抛出异常,05自定义异常,06with和as环境安装器,创建一个继承Exception类的子类,就是自定义异常类。
当遇到自己设定的错误时,使用raise语句抛出自定义的异常。
自定义异常,过渡页,01异常简介,02异常类,03异常处理,04抛出异常,05自定义异常,06with和as环境安装器,with语句,现在有一个需求,打开foo.txt文本文件,读取完所有的数据以后关闭文件。
示例代码如下:
file=open(“/tmp/foo.txt”)#打开文件data=file.read()#读取数据file.close()#关闭文件,文件读取出现问题怎么办?
忘记关闭文件出现问题怎么办?
with语句,为了避免在文件读取的过程中产生这些问题,可以在上述示例中增加处理异常的语句,加强版本如下:
file=open(/tmp/foo.txt)try:
data=file.read()finally:
file.close(),该代码虽然解决了产生异常的可能,但是这段代码过于冗长。
此时,在示例中使用with语句处理上下文环境产生的异常,具体如下。
withopen(/tmp/foo.txt)asfile:
data=file.read(),with语句,Python2.5开始,引入了with语句,with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源。
with语句,withcontext_exprasvar:
with_body,with语句格式,context_expr:
需要返回一个上下文管理器对象,该对象并不赋值给as子句中的var。
var:
可以是变量或者元组。
with_body:
with语句包裹的代码块。
with语句,with语句执行过程:
(1)执行context_expr,生成上下文管理context_manager;
(2)调用上下文管理器的_enter_()方法,如果使用了as子句,就把_enter_()方法的返回值赋值给as子句中的var;
(3)执行语句体with_body。
(4)无论在执行的过程中是否发生异常,都会执行上下文管理器的_exit_()方法。
该方法负责执行程序的“清理”工作,如释放资源等。
(5)如果执行过程中没有出现异常,或者语句体中执行了break、continue或者return语句,则以None作为参数调用_exit_()方法;
如果执行过程中出现异常,则会使用sys.exc_info得到的异常信息为参数调用_exit_()方法。
(6)出现异常时,如果_exit_()方法返回的结果为False,则会重新抛出异常,让with之外的语句逻辑来处理异常,这是通用做法;
如果返回True,则忽略异常,不再对异常进行处理。
上下文管理器,要想使用with语句进行工作,前提是要有上下文管理器。
上下文管理器是Python2.5开始支持的一种语法,用于规定某个对象的使用范围,一旦进入或者离开使用范围,会有特殊的操作被调用。
1.上下文管理协议,上下文管理器,_enter_(self):
进入上下文管理器时调用此方法,其返回值被放入wi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 课件 Python 常见 异常 处理