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简单实现TCP包发送十六进制数据的方法
Apr 16 Python
python中函数传参详解
Jul 03 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
Mac安装python3的方法步骤
Aug 09 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
如何基于Python实现电子邮件的发送
Dec 16 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
通过实例解析python and和or使用方法
Nov 14 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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四舍五入精确小数位及取整
2014/01/14 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
使用tensorflow实现AlexNet
2017/11/20 Python
10个Python小技巧你值得拥有
2018/09/29 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
研修第一天随笔感言
2014/02/15 职场文书
预备党员承诺书
2014/03/25 职场文书
公司聘任书模板
2014/03/29 职场文书
卖车协议书范例
2014/09/16 职场文书
个人年度总结报告
2015/03/09 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
python异常中else的实例用法
2021/06/15 Python
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
Golang jwt身份认证
2022/04/20 Golang