老派程序员浅谈Python的异常处理
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
文章目录
- 一.与python异常相关的关键字
- 二.python中的异常类型
- 三.基本方式:
- 三.手动使用raise引发异常
Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。
注意:虽然大多数错误会导致异常,但一个异常不一定代表错误,有时候它们只是一个警告,有时候它们可能是一个终止信号,比如退出循环等。
一.与python异常相关的关键字
raise:手动抛出/引发异常:raise [exception[,data]
try/except:捕获异常并处理
pass:忽略异常
as:定义异常实例(except IOError as e)
finally:无论是否出现异常,都执行的代码]
else:如果try中的语句没有引发异常,则执行else中的语句
except Exception as error:
二.python中的异常类型
1.StandardError类:如果程序上出现逻辑错误, 将引发该异常。StandardError类是所有内敛异常的基类,放置在默认的命名空间中,因此使用IOEroor, EOFError, ImportError等类,不需要导入exception模块。
StopIteration类:判断循环是否执行到尾部,如果循环到尾部,则抛出该异常。
GeneratorExit类:是由Generator函数引发的异常,当调用close()时引发该异常。
Warning类:表示程序中的代码引起的警告。
三.基本方式:
1.try:
语句1
except [exception1(,exception2…),[data…]]:
语句2
else:
语句3
该种异常处理语法的规则是:
· 执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
· 如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
· 如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
· 如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
· 如果没有发生异常,则执行else块代码。
import traceback
try:1/0
except Exception as err:print(err)
try:f = open("file.txt","r")
except IOError as e:print(e)
try:f = open("file.txt","r")
except Exception as e:print(e)
2.try:
语句1
finally:
语句2
该语句的执行规则是:
· 执行try下的代码。
· 如果发生异常,在该异常传递到下一级try时,执行finally中的代码。
· 如果没有发生异常,则执行finally中的代码。
第二种try语法在无论有没有发生异常都要执行代码的情况下是很有用的。例如我们在python中打开一个文件进行读写操作,我在操作过程中不管是否出现异常,最终都是要把该文件关闭的。这两种形式相互冲突,使用了一种就不允许使用另一种,而功能又各异
所以,一般情况下,finally里面执行的都是一些清理工作,比如:关闭文件描述符,释放锁等
注意,finally中,如果出现异常,外部如果没有相应的捕获机制,该异常会层层抛出,直到最顶端,然后解释器停止。一般在外层再加一次try except异常捕获
三.手动使用raise引发异常
1.raise [exception[,data]]
2.在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类:Python异常是那些类的对象。执行raise语句时,Python会创建指定的异常类的一个对象。raise语句还可指定对异常对象进行初始化的参数。为此,请在异常类的名称后添加一个逗号以及指定的参数(或者由参数构成的一个元组)。
3.实例:
try:print("开始测试")raise IOError
except IOError:print("定义好的错误")
except:print("别的错误")
非常感谢你的阅读
大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是
没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深
入的研习计算机基础知识,整理好了,我放在我们的微信公众号《程序员学府》,如果你也不甘平庸,之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!
老派程序员浅谈Python的异常处理相关推荐
- 初级菜鸟程序员浅谈开源和共享精神
大家对开源这个东西肯定也是耳熟能详了,github上面有一大堆开源项目,供大家学习参与. 我个人感觉,开源其实就是一种企业或个人的自由选择.我个人是很respect替开源项目贡献代码的人,唉. 有时间 ...
- 黑马程序员-----浅谈面向对象的含义
--------android培训.java培训.期待与您交流! ---------- 这两天工作之余,一直在学习毕老师的java基础视频,昨天看到毕老师介绍面向对象的那一节,对毕老师举的例子印象很深 ...
- 黑马程序员 浅谈封装的具体实现的几种例子
可能很多人学了面向对象概念后,对封装只是一个模糊的理解,大概知道是怎么回事,但又说不出用的地方,本人小小的总结了一下: 1.属性封装了字段 例子: class Program { ...
- python相关职业-浅谈Python全栈开发工程师,让程序员都眼红的职业!
原标题:浅谈Python全栈开发工程师,让程序员都眼红的职业! Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 ...
- 浅谈 Python 程序和 C 程序的整合
浅谈 Python 程序和 C 程序的整合 Python 是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问, ...
- python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...
扣丁学堂浅谈Python编程中NotImplementedError的使用方法 2018-07-04 14:08:02 2559浏览 本篇文章扣丁学堂 Python编程中raise可以实现报出错误的功 ...
- python老是报参数未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
- python算法程序_浅谈python常用程序算法
一.冒泡排序: 1.冒泡排序是将无序的数字排列成从小到大的有序组合: 过程:对相邻的两个元素进行比较,对不符合要求的数据进行交换,最后达到数据有序的过程. 规律: 1.冒泡排序的趟数时固定的:n-1 ...
- python未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
最新文章
- 除了负载均衡,Nginx 还可以做很多:限流、缓存、黑白名单等
- canvas做一个简单气泡图
- RabbitMQ探索:结构分析与常用方法解释
- 新一代音视频技术架构驱动未来多媒体创新
- python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用
- 对基于消息队列的Activiti异步执行器进行基准测试
- 分布式锁的三种实现方式_分布式锁的多种实现方式
- 搜索引擎核心技术与算法 —— 词项词典与倒排索引优化
- cp210x驱动运行不了怎么解决_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法...
- Cent OS 重置root密码
- 计算机网络第四章思维导图_初级会计实务的第四章所有者权益的思维导图丨初级讲堂...
- android studio执行 Information:Gradle tasks [:app:assembleDebug]失败处理
- 银行笔试题目汇总——综合能力测试
- 威金敌敌畏--比特解决威金方案(转)
- CSS,文本溢出显示省略号
- 常见图片格式(HTML)
- Windows安全日志
- 证券交易api 查询证券编码及基本上市信息
- POJ-3255 Roadblocks
- html清除盒子间距,inline-block元素默认间距清除