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通过正则查找微博@(at)用户的方法
Mar 13 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
Python中import机制详解
Nov 14 Python
python编辑用户登入界面的实现代码
Jul 16 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
Python饼状图的绘制实例
Jan 15 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
Python离线安装各种库及pip的方法
Nov 28 Python
Python WSGI 规范简介
Apr 11 Python
Python OpenCV实现图像模板匹配详解
Apr 07 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面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
HTML5 js实现拖拉上传文件功能
2020/11/20 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
本科生的职业生涯规划范文
2014/01/09 职场文书
培训协议书范本
2014/04/22 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
预备党员群众意见
2015/06/01 职场文书
学会感恩主题班会
2015/08/12 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python