Python常见异常分类与处理方法


Posted in Python onJune 04, 2017

Python常见异常类型大概分为以下类:

1.AssertionError:当assert断言条件为假的时候抛出的异常

2.AttributeError:当访问的对象属性不存在的时候抛出的异常

3.IndexError:超出对象索引的范围时抛出的异常

4.KeyError:在字典中查找一个不存在的key抛出的异常

5.NameError:访问一个不存在的变量时抛出的异常

6.OSError:操作系统产生的异常

7.SyntaxError:语法错误时会抛出此异常

8.TypeError:类型错误,通常是不通类型之间的操作会出现此异常

9.ZeroDivisionError:进行数学运算时除数为0时会出现此异常

关于更多异常请参考官方文档:

2.7版本链接

3.6版本链接

Python异常处理:

例1:出现异常最简单处理方法

#!/usr/bin/python 
#coding:utf8 
 
#try与except结合用法 
 
a = 1 
b = 2 
 
try : 
  assert a > b     #如果a>b判断为假时将抛出AssertionError异常 
except AssertionError:  #如果捕获到AssertionError异常将执行except下面的代码块 
  print ( "a<b" )

上面例子输出结果为 a<b 因为在断言时a>b为假,这时候会抛出AssertionError异常,当捕获到此异常后就会执行except代码块中的语句

例2:使用多个except捕获异常

#!/usr/bin/python 
#coding:utf8 
 
#try与多个except结合用法,在try代码块中依次执行,只要捕获到异常就停止执行 
 
a = 1 
b = 2 
c = "1" 
 
try : 
  assert a < b 
  d = a + c 
except AssertionError: 
  print ( "a<b" ) 
except TypeError,e:   #这里的 e 为异常信息 
  print (e)

上面执行的结果为 unsupported operand type(s) for +: 'int' and 'str' 不支持整型和字符串型相加,前面断言为真,所以不会出现AssertionError异常,这时候继教执行下面语句,这时候就出现了TypeError异常,这时候就会执行except TypeError下面的代码块,后面的e代表异常的错误信息,所以这里的结果是打印出异常的错误信息

例3:try与except与else的使用

#!/usr/bin/python 
#coding:utf8 
 
a = 1 
b = 2 
c = "1" 
 
try : 
  assert a < b 
  d = a + b 
except AssertionError,e: 
  print ( "a<b" ) 
except TypeError,e: 
  print (e) 
else :          #当try代码块中执行没有发现任何异常的时候执行这里的语句 
  print ( "Program execution successful" )

上面执行结果为

例4:try与except与else与finally结合使用(可以没有else)

#!/usr/bin/python 
#coding:utf8 
 
#try与多个except结合用法,在try代码块中依次执行,只要捕获到异常就停止执行 
 
a = 1 
b = 2 
c = "1" 
 
try : 
  assert a < b 
  d = a + b 
  txt = open ( "/root/1.txt" ) 
  txt.write( "test" )    #上面打开文件默认以r方式打开,这里会抛出IOError异常 
except AssertionError,e: 
  print ( "a<b" ) 
except TypeError,e:   #这里的 e 为异常信息 
  print (e) 
except IOError,e: 
  print (e) 
else :          #当没有发现任何异常的时候执行这里的语句 
  print ( "Program execution successful" ) 
finally :         
#不管有没有民常都会执行finally代码块中的语句,通常用在打开文件,在文件处理过程过中出异常退出,这时候文件没有关闭 
  txt.close()
Python 相关文章推荐
Python命令行参数解析模块optparse使用实例
Apr 13 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
Python实现抢购IPhone手机
Feb 07 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
Python实现EM算法实例代码
Oct 04 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
python上下文管理器异常问题解决方法
Feb 07 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 Python
python opencv通过按键采集图片源码
May 20 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 Python
Python实现Linux的find命令实例分享
Jun 04 #Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 #Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 #Python
python snownlp情感分析简易demo(分享)
Jun 04 #Python
Python 调用Java实例详解
Jun 02 #Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 #Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 #Python
You might like
php判断变量类型常用方法
2012/04/24 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
重命名批处理python脚本
2013/04/05 Python
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python处理文本换行符实例代码
2018/02/03 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
关于python多重赋值的小问题
2019/04/17 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
构造器Constructor是否可被override?
2013/08/06 面试题
联谊活动策划书
2014/01/26 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
新教师个人工作总结
2015/02/06 职场文书
学籍证明模板
2015/06/18 职场文书
小学教师见习总结
2015/06/23 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python