@本文来源于公众号: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的异常处理相关推荐

  1. 初级菜鸟程序员浅谈开源和共享精神

    大家对开源这个东西肯定也是耳熟能详了,github上面有一大堆开源项目,供大家学习参与. 我个人感觉,开源其实就是一种企业或个人的自由选择.我个人是很respect替开源项目贡献代码的人,唉. 有时间 ...

  2. 黑马程序员-----浅谈面向对象的含义

    --------android培训.java培训.期待与您交流! ---------- 这两天工作之余,一直在学习毕老师的java基础视频,昨天看到毕老师介绍面向对象的那一节,对毕老师举的例子印象很深 ...

  3. 黑马程序员 浅谈封装的具体实现的几种例子

    可能很多人学了面向对象概念后,对封装只是一个模糊的理解,大概知道是怎么回事,但又说不出用的地方,本人小小的总结了一下: 1.属性封装了字段 例子: class Program     {       ...

  4. python相关职业-浅谈Python全栈开发工程师,让程序员都眼红的职业!

    原标题:浅谈Python全栈开发工程师,让程序员都眼红的职业! Python Python 的排名从去年开始就借助人工智能与独特的魅力持续上升,现在它已经成为了第一名. 与其它编程语言相比所占的优势 ...

  5. 浅谈 Python 程序和 C 程序的整合

    浅谈 Python 程序和 C 程序的整合 Python 是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问, ...

  6. python程序调用写好的代码_扣丁学堂浅谈Python编程中NotImplementedError的使用方法...

    扣丁学堂浅谈Python编程中NotImplementedError的使用方法 2018-07-04 14:08:02 2559浏览 本篇文章扣丁学堂 Python编程中raise可以实现报出错误的功 ...

  7. python老是报参数未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  8. python算法程序_浅谈python常用程序算法

    一.冒泡排序: 1.冒泡排序是将无序的数字排列成从小到大的有序组合: 过程:对相邻的两个元素进行比较,对不符合要求的数据进行交换,最后达到数据有序的过程. 规律: 1.冒泡排序的趟数时固定的:n-1 ...

  9. python未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

最新文章

  1. 除了负载均衡,Nginx 还可以做很多:限流、缓存、黑白名单等
  2. canvas做一个简单气泡图
  3. RabbitMQ探索:结构分析与常用方法解释
  4. 新一代音视频技术架构驱动未来多媒体创新
  5. python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用
  6. 对基于消息队列的Activiti异步执行器进行基准测试
  7. 分布式锁的三种实现方式_分布式锁的多种实现方式
  8. 搜索引擎核心技术与算法 —— 词项词典与倒排索引优化
  9. cp210x驱动运行不了怎么解决_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法...
  10. Cent OS 重置root密码
  11. 计算机网络第四章思维导图_初级会计实务的第四章所有者权益的思维导图丨初级讲堂...
  12. android studio执行 Information:Gradle tasks [:app:assembleDebug]失败处理
  13. 银行笔试题目汇总——综合能力测试
  14. 威金敌敌畏--比特解决威金方案(转)
  15. CSS,文本溢出显示省略号
  16. 常见图片格式(HTML)
  17. Windows安全日志
  18. 证券交易api 查询证券编码及基本上市信息
  19. POJ-3255 Roadblocks
  20. html清除盒子间距,inline-block元素默认间距清除

热门文章

  1. ARM中的MOV指令
  2. 添加了validaterequest=false 为什么还是报错
  3. solr的DIH操作同步mysql数据
  4. HATEOAS HAL
  5. Markdown学习+Typora快捷键
  6. 本科课程【数据结构与算法】实验1——线性表的顺序表示及插入、删除操作(C++实现)
  7. JavaScript 学习笔记(八)前后端交互;Ajax进行前后端交互
  8. Nodejs卸载与安装
  9. PCL 点云的旋转与平移
  10. 大数据时代,Java还行吗?