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中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
Python实现Singleton模式的方式详解
Aug 08 Python
python实现二分类的卡方分箱示例
Nov 22 Python
python 类之间的参数传递方式
Dec 20 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
Python生成随机验证码代码实例解析
Jun 09 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 Python
通过代码简单了解django model序列化作用
Nov 12 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 adodb连接不同数据库
2009/03/19 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
基于jquery完美拖拽,可返回拖动轨迹
2012/03/29 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
Python set集合类型操作总结
2014/11/07 Python
Python函数参数类型*、**的区别
2015/04/11 Python
Django实现表单验证
2018/09/08 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
Python通过Pillow实现图片对比
2020/04/29 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
如何获取某个日期是当月的最后一天
2013/12/05 面试题
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
大四学年自我鉴定
2013/11/13 职场文书
质检部职责
2013/12/28 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
平面设计师岗位职责
2014/09/18 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
初中信息技术教学计划
2015/01/22 职场文书
出国留学英文自荐信
2015/03/25 职场文书
党组织结对共建协议书
2016/03/23 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python