版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
异常处理1捕获异常目录异常的概念和类型2抛出异常3【任务4-7】寻找和为目标值的数字对4异常的概念若在运行过程中发生错误,程序的执行将会被中断,并创建异常对象。异常是程序在正常流程控制以外采取的动作,当它被引发时,计算机将自动寻找异常处理程序,以帮助程序恢复正常运行。要想保证程序正常运行,就需要排除错误,错误的出现可能是由语法导致的,也可能是由逻辑导致的。语法错误表明程序在结构上存在问题,可以在程序执行前加以纠正。逻辑错误则可能是因为缺少输入或输入不正确,某些情况下,也可能是因为由输入的内容无法生成预期的结果。一般情况下,逻辑错误是难以预防的,必须使用异常处理程序来应对。Python异常类型异常名说明异常名说明BaseException所有异常的基类RuntimeError一般的运行时异常Exception常规异常的基类NotImplementedError尚未实现的方法StandardError所有的内建标准异常的基类SyntaxError语法错误导致的异常ArithmeticError所有数值计算异常的基类IndentationError缩进错误导致的异常FloatingPointError浮点计算异常TabErrorTab和空格混用OverflowError数值运算超出最大限制SystemError一般的解释器系统异常ZeroDivisionError除零异常TypeError对类型无效的操作AssertionError断言语句失败ValueError传入无效的参数AttributeError对象不包含某个属性UnicodeErrorUnicode相关的异常Python异常类型异常名说明异常名说明EOFError没有读取到文件结束标记(EOF,EndofFile)UnicodeDecodeErrorUnicode解码错误导致的异常EnvironmentError操作系统异常的基类UnicodeEncodeErrorUnicode编码错误导致的异常IOErrorI/O(Input/Output,输入输出)操作失败UnicodeTranslateErrorUnicode转换错误导致的异常OSError操作系统异常Warning警告的基类WindowsError系统调用失败DeprecationWarning关于被弃用特征的警告ImportError导入模块/对象失败FutureWarning关于构造将来语义会有改变的警告KeyboardInterrupt用户中断执行UserWarning用户代码生成的警告LookupError无效数据查询的基类PendingDeprecationWarning关于特性将会被废弃的警告Python异常类型异常名说明异常名说明IndexError序列中没有此索引RuntimeWarning可疑的运行时行为(runtimebehavior)的警告KeyError映射中没有对应键SyntaxWarning可疑的语法的警告MemoryError内存溢出异常ImportWarning导入模块过程中触发的警告NameError未声明/初始化对象UnicodeWarning与Unicode相关的警告UnboundLocalError访问未初始化的本地变量BytesWarning与字节或字节码相关的警告ReferenceError弱引用试图访问已被回收的对象ResourceWarning与资源使用相关的警告异常的类型计算机语言针对可能出现的错误定义了异常类型,当某种错误引发了对应的异常时,异常处理程序将会被启动,从而恢复程序的正常运行。Python异常类型大致分为数值计算错误、操作系统错误、无效数据查询、Unicode相关的错误和警告等几类。异常体系内部还存在着层次关系,较低层次、更具细节的异常是某些高层次异常的子类,这些高层次异常被称为基类,子类和基类是相对的。Python异常体系中的部分关系如下图。1捕获异常目录异常的概念和类型2抛出异常3【任务4-7】寻找和为目标值的数字对4异常的处理在Python中普遍使用try语句处理异常,该语句一般包括try、except、else、finally4个部分,可以组成try-except-else、try-except、try-except-finally的形式。try部分包含尝试执行的代码块,except部分是特定异常的处理对策,else部分在程序运行正常时执行,而finally部分则无论try部分是否产生异常都会执行。处理异常的try语句可以被视为一种条件分支。与if语句的区别在于,try语句并不包含布尔表达式,执行的流向也不取决于布尔表达式,它依赖于代码块能否执行,其内在逻辑和运行流程与if语句相似,符合条件分支的特征。try:操作语句1except错误类型1aserror:操作语句2except错误类型2aserror:操作语句3else:操作语句4try-except-else语句try-except-else语句的基本语法格式如右。当执行try-except-else语句时,程序首先执行try代码块,即可能出错的试探性语句,从而试探该代码块是否会出现错误而导致程序无法继续执行。如果try代码块确实无法执行,那么可能会执行某个except代码块。执行except代码块的条件是,系统捕获的异常类型和该代码块标识的类型相符。如果try代码块正常执行,则会接着执行else代码块。>>>number=0>>>#以变量number作除数,尝试运行除法操作>>>try:...print('1.0/number=',1.0/number)...exceptZeroDivisionError:#如果异常是ZeroDivisionError,输出提示信息...print('***除数为0***')***除数为0***try-except语句在try语句中,except与else代码块都是可选的,except代码块可以有0个或多个,else代码块可以有0个或1个。当try语句中没有else代码块时,就构成try-except语句,示例代码如下。如上代码中,由于0不能作为除数,因此引发了除零异常,但由于except代码块给出了ZeroDivisionError的解决方案,因此将会执行except代码块中的内容,程序得以完整地运行。Python异常层次差异>>>dict1={'a':1,'b':2,'v':22}>>>#尝试查询dict1中不存在的键值对>>>try:...x=dict1['y']...exceptLookupError:...print('查询错误')...exceptKeyError:...print('键错误')...else:...print(x)查询错误如下代码的try-except-else语句尝试查询在字典中不存在的键值对时引发了异常。程序优先执行exceptLookupError代码块,导致出现了非真正错误原因的提示。因此,使用多个except代码块时,必须坚持规范排序,要保证从最具针对性的异常到最通用的异常依次排序。>>>#调换LookupError和KeyError处理代码块的顺序>>>dict2={'a':1,'b':2,'v':22}>>>#尝试查询dict2中不存在的键值对>>>try:...x=dict2['y']...exceptKeyError:...print('键错误')...exceptLookupError:...print('查询错误')...else:...print(x)键错误try:
操作语句1except错误类型1aserror:
操作语句2except错误类型2aserror:
操作语句3finally:
操作语句4try-except-finally语句try-except-finally语句的基本语法格式如下。无论是否发生异常,finally代码块都会执行,因此其常用于释放资源,如关闭文件、网络连接,以及释放内存等。使用finally关闭文件>>>try:...file=open('航天新闻.txt','r')...content=file.read()...print(content)...#这里可能会发生异常,例如文件不存在...exceptFileNotFoundError:...#捕获FileNotFoundError异常...print("文件未找到,请检查文件路径。")...exceptExceptionase:...#捕获其他所有异常...print(f"发生了未知的异常:{e}")...finally:...#清理块中的代码...iffile:...file.close()...print("文件已关闭。")使用finally关闭文件,如右代码。1捕获异常目录异常的概念和类型2抛出异常3【任务4-7】寻找和为目标值的数字对4>>>try:...num=0...ifnum==0:...raiseValueError("不能除以0。")...result=num/2...print(result)...exceptValueErrorase:...#捕获ValueError异常...print(f"值错误:{e}")值错误:不能除以0。raise语句除自然发生的异常外,在Python中还可以使用raise语句和assert语句主动抛出异常。使用raise语句抛出异常时,只需在raise后输入异常名即可,如右代码。如右代码可知,当num等于0时,可以使用raise语句手动抛出一个ValueError异常。>>>try:...num=0...assertnum!=0,"不能除以0。"...result=num/2...print(result)...exceptAssertionErrorase:...#捕获AssertionError异常...print(f"断言错误:{e}")断言错误:不能除以0。assert语句assert语句又称为断言语句,用于检查一个表达式的值是否为Ture。当表达式的值为False时,抛出AssertionError异常;当表达式的值为True时,将不做任何操作。assert语句的基本语法格式如下。如上代码可知,可以使用assert语句来断言num不等于0。当num等于0时,assert语句会抛出一个AssertionError异常。1捕获异常目录异常的概念和类型2抛出异常3【任务4-7】寻找和为目标值的数字对4【任务4-7】寻找和为目标值的数字对任务分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年隆林各族自治县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年铅山县医疗事业单位人员招聘考试模拟试题及答案解析
- 2026年盐池县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年应县医疗事业单位人员招聘考试模拟试题及答案解析
- 2026年临泉县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年临泽县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年临泉县带编教师招聘笔试备考题库及答案解析
- 2026年威远县中小学幼儿园教师招聘考试备考试题及答案解析
- 2026年镇远县医疗事业单位人员招聘考试模拟试题及答案解析
- 2026年礼县医疗事业单位人员招聘笔试备考试题及答案解析
- 创新教育评价体系的构建与实施
- 2025深信服超融合一体机产品手册
- 人教版八年级上册数学教学计划的时间安排
- 回流焊的工艺流程
- 无人机通信与导航技术-洞察分析
- T-BAAA 001-2024 事故车辆损失鉴定评估规范
- 手术器械的包装操作流程
- 测绘人员培训与岗位管理制度
- AQuietHouse(课件)英语启蒙丽声北极星分级绘本第二级上
- 材料力学第4版单辉祖习题答案
- 广联达钢筋算量框架梁节点设置解析
评论
0/150
提交评论