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使用marshal模块序列化实例
Sep 25 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
Aug 09 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
浅谈Python 中的复数问题
May 19 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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/08/31 PHP
php的memcached客户端memcached
2011/06/14 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
Python的多维空数组赋值方法
2018/04/13 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
Python几种常见算法汇总
2020/06/02 Python
销售顾问的岗位职责
2013/11/13 职场文书
幼儿园招生广告
2014/03/19 职场文书
婚宴来宾致辞
2015/07/28 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL