版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、异常处本节重解异常的基本概掌中异常的基本使用方认识异在前面经常提到 程序运出错 这样的概念. 实际上, 这异常处本节重解异常的基本概掌中异常的基本使用方认识异在前面经常提到 程序运出错 这样的概念. 实际上, 这解释抛出一个 异异常的基本概故意将 敲错, 解释抛出一个 Synt axErro异Po wor ld# 执结File tes t .py line Poinvalid syntaSynt axError 故一个下标越界的表, 解释抛出一异IndexErroa = 123pa 100# 执结Traceback (mos recenFile tes t .py linca lllas t
2、) 4in pa 100IndexError li s indeouorang故意打开一个存在的文件, 解释抛出一IOErro异f = open( aaaaaaaaaaaaaaa . txt # 执结Tracebf = open( aaaaaaaaaaaaaaa . txt # 执结Traceback (mos recenca lllas t ) Fil e t es t . py ,li ne 3 ,in f = open( aaaaaaaaaaaaaaa . txt )IOError Errno 2 No such f ile or di rectory aaaaaaaaaaaaaaa .
3、 txt 总结一下异常是指程序执过程中, 发生错误. 根据同的错误类型, 抛出同类型的异常如果一个程序抛出异常, 如果对这个异常做任何处, 默认为就是导致程序运终止这要的异常和C+/Java的异常做一个区分. 因是解释执的, 所以语法误和执逻辑出现问题导致的错误都统一成异常. 而C+和Java会预先对代码进编译如果语法出错, 在编译期就能检查出来. 因此C+和Java的异常只涵盖运时的错误异常机制的意异常机制归根结底是想办法简化代码的错误处逻辑看一段C语言的代码. 这是在C语言中常见的片段fd = socke t (AF_INET,0); i f(fd 0)perror(socket) ; r
4、 e t urn 1 ;r e t = b i nd(fd ,( s t r uc tsockaddr*)&addr, i f(r e t 0)perror(bind) ; r e t urn 1 ;s i zeof(addr) r e t = li s t en(fd ,10); i f(r e t 0)perror(listen) ; r e t urn 1 ;. 调用一个函数, 有可能会调用失败. C语言中通常使用函数返回一个错误的值的方式来判定函数的成功失败. 因此每个函数调用完成, 往往需要检查一下函数都返回值.每调用一个函数, 都要围绕这个函数写一大堆处错误情况的逻辑, 导致处正常
5、逻辑的代码, 和异常逻辑的代在一起通过异常处机制, 就可以做到将正常逻辑和异常逻辑分离. 使代码的可读性好t ry通过异常处机制, 就可以做到将正常逻辑和异常逻辑分离. 使代码的可读性好t rysock=socke t (AF_ INET,sock . b i nd(ADDR)sock. li s ten(5excep t: # 可以进其他复杂的处p error 处异使用 try 语来捕捉异常(可能触发异常的代码放到try中). 使用except来具体处异常.如果异常能够被except捕捉到, 则会影响程序继续执.IndexError, e相当于捕捉到的这个异常对象的名字为e. 这个异常对象中
6、包含异常的具体信息a = 1t ryexcep 23a 100o1 I ndexErr o r ,e: t ype ( e )eop# 执结 li s ti ndex ou tofr angeoexcept可以指定一个具体的处哪种类型异常. 如果try中抛出的异常类型, 在except中, 那么仍会程序终止a = 1t ryexcep p23a 100o1 IOError eeop# 执结Traceback (mos recenFile tes t .py linca lllas t ) 5in pa 100IndexError li s indeouorang一个try语, 可以和多个exc
7、ept语联合工作a = 123t rye一个try语, 可以和多个except语联合工作a = 123t ryexcep texcep tpa 100IOError eeI ndexErr o r ,e: 一个try语, 还可以搭配else工作a = 123t ryexcep tpel sepa1I ndexErr o r ,e: # 出现, 个逻# 未出现异, 这个逻ps ok except可以带具体的异常类型, 这样只要try中触发任意的异常, except都能捕捉到a = 1t ryexcep t: pel sep23a 100ps error ps ok 中内置的异常类, 其实都继承自
8、 Exception 类. 所以上面的代码还可以写a = 1t ryp23a 100excep pel sepException eeps ok 如果想执一些管是否触发异常, 都要执到的代码, 可以放到nally语块中t ryf = open( text . txt ) f o rli nei nt ryf = open( text . txt ) f o rli nei n f :linexcept Exceptionepf inallye# 无论try中是否触,用到finally中的fclose f .close() 抛出异使rai s关键字在代码中 抛出异常#实现一个函数做整数除法def
9、 Divide(xy) i f y = 0rai sreturn Exception( divide zero yDivide(10# 执结Traceback (mos recenca lllas t ) 8in Fil e t es t . py ,line Di v i de ( 1 ,0)File tes t .py lin5in Dividrai sExceptionException( divide zero divide zer因常信息只是抛出异常, 并没有捕捉异常, 程序还是执终止(但是错误信息所定义的微修改一下程序, 捕捉一下异常def Divide(xy) i f y = 0rai se Exception( divide zero ) r e t u r n xt ryDivide(10except Exceptio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版高端商务门面租赁合同4篇
- 2025年度智能家庭“魔百和”套餐开通及服务协议3篇
- 2024年小学消防安全责任制度
- 遗传算法的课程设计论文
- 运输行政管理课程设计
- 二零二五年绿色环保刮瓷施工技术合作协议2篇
- 2025年度高端消防工程设计合同范本3篇
- 2025年度个人贷款合同补充协议(抵押物变更)4篇
- 《中医养生学辅助》课件
- 2025年度商业楼宇窗帘设计安装一体化合同范本4篇
- 2025年浙江省湖州市湖州职业技术学院招聘5人历年高频重点提升(共500题)附带答案详解
- ZK24600型平旋盘使用说明书(环球)
- 城市基础设施维修计划
- 2024山西广播电视台招聘专业技术岗位编制人员20人历年高频500题难、易错点模拟试题附带答案详解
- 新材料行业系列深度报告一:新材料行业研究框架
- 人教版小学英语各册单词表(带英标)
- 广东省潮州市潮安区2023-2024学年六年级上学期期末考试数学试题
- 乡村治理中正式制度与非正式制度的关系解析
- 智能护理:人工智能助力的医疗创新
- 国家中小学智慧教育平台培训专题讲座
- 5G+教育5G技术在智慧校园教育专网系统的应用
评论
0/150
提交评论