




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章异常处理2主要内容1.异常的基本概念2.异常捕获与处理,try,except,else,finally3.抛出异常异常程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并提示一些错误信息,这就是异常。>>>x=10>>>y=0>>>z=x/yTraceback(mostrecentcalllast):File"<pyshell#12>",line1,in<module>z=x/yZeroDivisionError:divisionbyzeroPython内置异常异常错误原因AssertionError在assert语句失败时引发。AttributeError在属性分配或引用失败时引发。EOFError当input()函数达到文件结束条件时引发。FloatingPointError当浮点运算失败时引发。GeneratorExit在close()调用生成器的方法时引发。ImportError在找不到导入的模块时引发。IndexError当序列的索引超出范围时引发。KeyError在字典中找不到键时引发。KeyboardInterrupt当用户按下中断键(Ctrl+c或Delete)时引发。MemoryError在操作内存不足时引发。NameError在本地或全局范围内找不到变量时引发。Python内置异常异常错误原因NotImplementedError尚未实现的方法。OSError当系统操作导致系统相关错误时引发。OverflowError当算术运算的结果太大而无法表示时引发。ReferenceError在使用弱引用代理访问垃圾收集的引用对象时引发。RuntimeError当错误不属于任何其他类别时引发。StopIteration由next()函数引发,以指示迭代器没有其他项目可返回。SyntaxError遇到语法错误时由解析器引发。IndentationError缩进不正确时引发。TabError当缩进由不一致的制表符和空格组成时引发。Python内置异常异常错误原因SystemError在解释器检测到内部错误时引发。SystemExit由sys.exit()功能引发。TypeError当函数或操作应用于错误类型的对象时引发。UnboundLocalError在对函数或方法中的局部变量进行引用但没有值绑定到该变量时引发。UnicodeError在发生与Unicode相关的编码或解码错误时引发。UnicodeEncodeError在编码过程中发生与Unicode相关的错误时引发。UnicodeDecodeError在解码期间发生与Unicode相关的错误时引发。UnicodeTranslateError在翻译过程中发生Unicode相关错误时引发。ValueError当函数获取正确类型但值不正确的参数时引发。ZeroDivisionError当除法或模运算的第二个操作数为零时引发常见异常1.AssertionError:断言语句失败2.AttributeError:尝试访问未知的对象属性3.IndexError:索引超出序列的范围4.KeyError:字典中查找一个不存在的关键字5.OSError:操作系统产生的异常6.NameError:尝试访问一个不存在的变量7.SyntaxError:Python的语法错误8.TypeError:不同类型间的无效操作9.ZeroDivisionError:除数为零异常常见异常1.AssertionError:断言语句失败。assert语句后边的条件为False是抛出AssertionError异常。>>>x=10>>>assertx<20>>>assertx<5Traceback(mostrecentcalllast):File"<pyshell#23>",line1,in<module>assertx<5AssertionError>>>常见异常2.AttributeError:尝试访问未知的对象属性>>>L1=['a','b','a','c','a']>>>print(L1.count('a'))3>>>print(L1.len())Traceback(mostrecentcalllast):File"<pyshell#34>",line1,in<module>print(L1.len())AttributeError:'list'objecthasnoattribute'len'>>>常见异常3.IndexError:索引超出序列的范围>>>L1=['a','b','a','c','a']>>>print(L1[4])a>>>print(L1[5])Traceback(mostrecentcalllast):File"<pyshell#39>",line1,in<module>print(L1[5])IndexError:listindexoutofrange>>>常见异常4.KeyError:字典中查找一个不存在的关键字访问字典时,关键字不存在引发KeyError错误。>>>d1={'x':1,'y':2,'z':3}>>>print(d1['x'])1>>>print(d1['xx'])Traceback(mostrecentcalllast):File"<pyshell#42>",line1,in<module>print(d1['xx'])KeyError:'xx'>>>常见异常5.FileNotFoundError:文件找不到的异常。>>>withopen("d:\\aaa.txt")asr: print(r.read())
Traceback(mostrecentcalllast):File"<pyshell#48>",line1,in<module>withopen("d:\\aaa.txt")asr:FileNotFoundError:[Errno2]Nosuchfileordirectory:'d:\\aaa.txt'>>>常见异常6.NameError:尝试访问一个不存在的变量变量要先赋值后使用。如果访问的变量不存在,引发NameError。>>>print(xxx)Traceback(mostrecentcalllast):File"<pyshell#51>",line1,in<module>print(xxx)NameError:name'xxx'isnotdefined常见异常7.SyntaxError:Python的语法错误>>>input"x:"SyntaxError:invalidsyntax>>>print"x"SyntaxError:Missingparenthesesincallto'print'.Didyoumeanprint("x")?常见异常8.TypeError:不同类型间的无效操作>>>a=5+"10"Traceback(mostrecentcalllast):File"<pyshell#58>",line1,in<module>a=5+"10"TypeError:unsupportedoperandtype(s)for+:'int'and'str'常见异常9.ZeroDivisionError:除数为零异常>>>a=5/0Traceback(mostrecentcalllast):File"<pyshell#62>",line1,in<module>a=5/0ZeroDivisionError:divisionbyzero异常捕获与处理程序在出现异常时,可以捕获这些异常,进行异常处理。简单的异常捕获:try:检测范围ExceptException[asreason]:出现异常后的处理代码简单的异常处理【例11.1】简单的异常处理。try:f=open("d:\Python\\xx.txt","r")print(f.read())f.close()exceptExceptionasreason:
print(reason)#输出异常信息print("文件操作失误")Exception不区分异常类型,能处理任何错误reason获取错误信息多种异常处理在编程时需要针对不同类型的异常,做出不同的响应。try语句中多个except分别处理不同异常。try:检测范围exceptException1:处理异常1的语句[exceptException2:处理异常2的语句]...[exceptExceptionasreason:
处理异常的语句]一旦某个except捕获了异常,后面剩余的except子句将不会再执行。except可以有1个或更多。多种异常处理【例11.2】多种异常处理。try:a=int(input("输入a:"))b=int(input("输入b:"))c=a/bprint(c)d=5+"10"exceptValueError:#1print("您输入了错误的数字!")exceptZeroDivisionError:#2print("被0除错误!")exceptExceptionasreason:print("其他错误!",reason)print("运行到这里!")#3excep后执行合并异常处理在一个except子句中,使用圆括号将多个异常括起来,中间用逗号隔开,即可同时处理多个异常。【例11.3】合并异常处理——输入两个数,输出它们的商。#eg1103.pytry:var1,var2=map(float,input("输入两个数字:").split())result=var1/var2except(ValueError,ZeroDivisionError):print("输入了错误的数字或除数为0错误!")exceptExceptionasreason:print("其他错误:{}".format(reason))else:print("{}/{}={}".format(var1,var2,result))完整的异常捕获语句try:
.......#尝试执行的代码except错误类型1:
处理语句1#针对错误类型1,对应的代码处理except错误类型2:处理语句2#针对错误类型2,对应的代码处理except(错误类型3,错误类型4):
处理与句3、4
#针对错误类型3和4,对应的代码处理exceptExceptionasresult:
print(result)
#打印错误信息else:处理语句#没有异常才会执行的代码finally:处理语句#无论是否有异常,都会执行的代码完整的异常捕获语句exceptExceptionasresult:不管是什么异常,都可以处理。else:只要没有异常发生,就会执行else的语句。finally:不管是否有异常,都要执行。完整的异常捕获语句【例11.3】多种异常处理。try:a=int(input("输入a:"))b=int(input("输入b:"))c=a/bprint(c)exceptValueError:print("您输入了错误的数字!")exceptZeroDivisionError:print("被0除错误!")exceptExceptionasresult:print("错误信息:",result)else:print("程序运行正确,无异常!")finally:print("无论是否有异常,都要执行")print("这句还要执行!")异常的传递性当函数或方法执行出现异
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基因治疗药物临床研发现状报告:2025年市场前景分析
- 2025年食品工业节能减排技术改造项目质量管理体系报告
- 2025年下沉市场消费金融与金融机构合作模式创新与风险控制研究报告
- 2025年机械制造企业服务化转型中的服务创新与产业协同报告
- 快递市场2025年价格战背后的政府政策与行业规范研究报告
- 2023年知识竞赛策划方案大全
- 2023年银行招聘之银行招聘综合知识真题附答案
- 2023年系统集成项目管理工程师考试大纲复习知识
- 2023年继续教育信息化能力建设题库与答案
- 2023年造价工程师工程造价计价与控制试题及答案
- 2025工会知识测试题及答案
- 2025年塔城地区直遴选面试真题附详解含答案
- 2025机动车检测站授权签字人考试试题(附含答案)
- 内部竞聘选拔的方案
- 2025年法律专业基础知识考试试卷及答案
- DGTJ08-2232-2017 城市轨道交通工程技术规范
- 四川省成都市2023级高中毕业班摸底测试(成都零诊)化学试题及答案
- 2024华南理工大学辅导员招聘笔试真题
- 消化道异物护理常规
- 2025年光电耦合器行业现状分析:全球光电耦合器总产量将达到692.22亿颗
- 甘肃浙能武威能源有限公司招聘笔试题库2025
评论
0/150
提交评论