版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSM框架应用于沈工高职考试系统的设计与实践第10章异常处理异常的概念10.1异常是指因程序运行时发生错误而产生的信号。如果程序中没有对异常进行处理,则程序会抛出该异常并停止程序运行。为了保证程序的稳定性和容错性,我们需要在程序中捕获可能的异常并对其进行处理,使得程序不会因异常而意外停止。10.1异常的概念异常定义1引入异常处理机制后,使得异常处理代码和正常执行的程序代码分隔开,从而增加了程序的清晰性、可读性。异常处理机制对产生的各种异常事件进行分类处理,也可以对多个异常进行统一处理,一具有较高的灵活性。引入异常后,可以从try...except之间的代码段中快速定位异常出现的位置,提高异常处理的效率。10.1异常的概念异常处理的优点2异常类10.2异常是指因程序运行时发生错误而产生的信号。如果程序中没有对异常进行处理,则程序会抛出该异常并停止程序运行。为了保证程序的稳定性和容错性,我们需要在程序中捕获可能的异常并对其进行处理,使得程序不会因异常而意外停止。10.2异常类异常定义1异常可以分为语法错误和逻辑错误两类语法错误是指编写的程序不符合编程语言的语法要求。例如:异常分类110.2异常类逻辑错误是指虽然编写的程序符合编程语言的语法要求,但要执行的数据操作不被系统或当前环境所支持。常见异常如下:异常分类2异常描述AttributeError当访问一个属性失败时引发该异常ImportError当导入一个模块失败时引发该异常IndexError当访问序列数据的下标越界时引发该异常KeyError当访问一个映射对象(如字典)中不存在的键时引发该异常MemoryError当一个操作使内存耗尽时引发该异常NameError当引用一个不存在的标识符时引发该异常OverflowError当算术运算结果超出表示范围时引发该异常10.2异常类异常分类3异常描述RecursionError当超过最大递归深度时引发该异常RuntimeError当产生其他所有类别以外的错误时引发该异常TabError当使用不一致的缩进方式时引发该异常TypeError当传给操作或函数的对象类型不符合要求时引发该异常UnboundLocalError引用未赋值的局部变量时引发该异常ValueError当内置操作或函数接收到的参数具有正确类型但不正确值时引发该异常ZeroDivisionError当除法或求模运算的第2个操作数为0时引发该异常FileNotFoundError当要访问的文件或目录不存在时引发该异常FileExistsError当要创建的文件或目录已存在时引发该异常10.2异常类异常分类-案例410.2异常类NameError当程序员访问一个未声明的变量时,会引发NameError,例如:a=20b=30print(a,b,c)Traceback(mostrecentcalllast):File"D:/PycharmCode/Chapter9/Demo1.py",line3,in<module>print(a,b,c)NameError:name'c'isnotdefined10.2异常类IndexError当使用序列中不存在的索引时,会引发这类异常,例如:names_list=["xiaozhao","xiaowang","xiaoli"]print(names_list[3])Traceback(mostrecentcalllast):File"D:/PycharmCode/Chapter9/Demo1.py",line2,in<module>print(names_list[3])IndexError:listindexoutofrange10.2异常类KeyError当使用字典中不存在的键访问值时,会引发异常,例如:student_dict={'name':'王晓明','age':20,'phone':}print(student_dict['address'])Traceback(mostrecentcalllast):File"D:/PycharmCode/Chapter9/Demo1.py",line2,in<module>print(student_dict['address'])KeyError:'address'10.2异常类AttributeError当使用对象中不存在的属性时,会引发异常,例如:tuple_one=(1,2,3,4,5)tuple_one.remove(1)Traceback(mostrecentcalllast):File"D:/PycharmCode/Chapter9/Demo1.py",line2,in<module>tuple_one.remove(1)AttributeError:'tuple'objecthasnoattribute'remove'10.2异常类FileNotFoundError当试图打开不存在的文件时,会引发异常,例如:file=open("test.txt")以上代码,试图打开test.txt文本文件,而当前目录下并没有这个文件,出现以下错误信息:Traceback(mostrecentcalllast):File"D:/PycharmCode/Chapter9/Demo1.py",line1,in<module>file=open("test.txt")FileNotFoundError:[Errno2]Nosuchfileordirectory:'test.txt'10.2异常类异常处理方法10.310.3异常处理方法异常处理机制1python中的异常处理机制语法的完整格式如下:try:#语句块exceptA:#异常A处理代码exceptB:#异常B处理代码except:#其他异常处理代码else:#没有异常处理代码finally:#最后必须处理代码执行try子句的语句块。如果没有异常发生,则except子句不被执行。如果有异常发生,则根据异常类型匹配每一个except关键字后面的异常名,并执行匹配的那个except子句的语句块;如果异常类型与所有except子句都不匹配,则执行except语句;如果执行过程中没有异常发生,else中包含语句被执行不管是否抛出异常,都会执行finally下的代码单个异常处理210.3异常处理方法多个异常处理3except子句后面的异常类型,既可以是单个异常类型,如“exceptValueError:”也可以是由多个异常类型组成的元组,如“except(ValueError,ZeroDivisionError):”;还可以为空,即“except:”,表示捕获所有的异常10.3异常处理方法抛出异常10.4使用raise语句能显式地触发异常,基本格式如下:10.4.1raise语句raise异常类#使用类名引发异常raise异常类对象#使用异常类的实例引发异常raise
#传递异常10.4.2assert语句assert语句又称作断言,指的是期望用户满足指定的条件。当用户定义的约束条件不满足的时候,它会触发AssertionError异常,所以assert语句可以当作条件式的raise语句。assert语句的格式为:逻辑上等同于:assert逻辑表达式,data#data是可选的ifnot逻辑表达式:raiseAssertionError(data)10.4.2assert语句断言的示例如下:a=0asserta!=0#a的值不能为0Traceback(mostrecentcalllast):File"D:/PycharmCode/Chapter9/Demo1.py",line2,in<module>asserta!=0#a的值不能为0AssertionError10.4.3with语句系统资源有限,在程序运行时,必须保证这些资源在使用后得到释放。文件使用完成后要及时关闭,否则程序的运行会有意想不到的隐患。使用with语句能方便的释放文件资源。10.4.3with语句文件初级操作1一般访问文件资源时我们会这样处理:f=open('D:/PyCharmCode/Chapter9/test.txt','r')data=f.read()f.close()10.4.3with语句文件中级操作2以下是文件操作的加强版本的写法:f=open('D:/PyCharmCode/Chapter9/test.txt','r')try:data=f.read()finally:f.close()10.4.3with语句文件高级操作3文件操作高级方法是使用with语句,代码如下:withopen('D:/PyCharmCode/Chapter9/test.txt','r')asf:data=f.read()自定义异常类10.5自定义异常1一般需要完成如下工作:(1)声明一个新的异常类,使之以Exception
类或其他某个已经存在的系统异常类或用户异常类为父类。(2)为新的异常类定义属性和方法,或重载父类的属性和方法,使这些属性和方法能够体现该类所对应的错误信息。3自定义异常案例1录入学生成绩信息,要求成绩在0-100之间。超出这个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国三十秒电子计时器市场现状数据分析及前景预测报告
- 2026及未来5年中国S瓦市场现状数据分析及前景预测报告
- 2026及未来5年中国IC卡水表市场现状数据分析及前景预测报告
- 2026年统计师初级统计专业真题及答案解析
- 2026年保健按摩师高级工考试题库(含答案)
- 2026年光伏企业业务考试真题及参考答案
- 临床检验技师考试专业知识试题及答案详解
- 2026年食品安全知识培训线上模拟题及答案详解
- 2026年辽宁公务员行测考试模拟题及答案详解
- 2026年汉字基础模拟试卷(含答案)
- 2025年10月 手机媒体概论(14237)自考真题
- GB/T 48023-2026数据中心冷板式液冷系统技术规范
- 孕产妇危重症紧急救治专家共识(2026年版)
- 2025年新疆公路二级造价师计量与计价实务真题及参考答案
- 2026年4月自考13181数据结构试题试题及答案
- 2026年4月自考13000英语(专升本)试题及答案
- 食品企业食品安全新员工入职培训全规划
- 2026 婴幼儿发展引导员(中级四级)职业技能鉴定考试题库(完整版)
- 矩阵理论 课件 第4章第5节凯莱-哈密顿定理与矩阵的最小多项式
- 幼儿园安全家委会
- 农村土地使用权转让协议书
评论
0/150
提交评论