详解Python异常处理中的Finally else的功能


Posted in Python onDecember 29, 2017

Python使用Try Exception来处理异常机制 若Exception中有Try对应的异常处理,则Try - exception之后的代码将被执行,但若Try - exception中没有对应的代码,则程序抛出Traceback停止运行 那么else finally就是针对这两种情况带来的后果分别相应的关键字

else

如果一个Try - exception中,没有发生异常,即exception没有执行,那么将会执行else语句的内容

反之,如果触发了Try - exception(异常在exception中被定义),那么将会执行exception中的内容,而不执行else中的内容

下面代码在python 3中运行通过

try:
  a = 1 / 0
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
else:
  print("Program is running here!")

由于此时触发了Try - exception,所以执行exception

不执行else

输出结果:Division is 0 ,Wrong!

try:
  a = 1 / 1
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
else:
  print("Program is running here!")

同理,这段代码由于try中无异常,所以执行else语句

输出结果:Program is running here!

所以如果try中的异常在exception中被指出,那么:

Try - exception-else中,执行了exception不执行else,执行else不执行exception。

或者这么理解:

作者希望Try - exception是指出错误的,如果Try - exception并没有指出错误,则是另外(else)的情况,所以执行else语句

finally

如果try中的异常没有在exception中被指出,那么系统将会抛出Traceback(默认错误代码),并且终止程序,接下来的所有代码都不会被执行,但如果有Finally关键字,则会在程序抛出Traceback之前(程序最后一口气的时候),执行finally中的语句。这个方法在某些必须要结束的操作中颇为有用,如释放文件句柄,或释放内存空间等。

try:
  a = 1 / '1'
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
else:
  print("Program is running here!")

这个程序会输出Traceback
Traceback (most recent call last):
File “*********************, line 2, in
a = 1 / ‘1'
TypeError: unsupported operand type(s) for /: ‘int' and ‘str'

因为try中的异常没有在exception中被指出,如果改为下面程序

try:
  a = 1 / '1'
except ZeroDivisionError:
  print("Division is 0 ,Wrong!")
finally:
  print("Program is running here!")

输出结果:

Traceback (most recent call last):
File “********************”, line 2, in
a = 1 / ‘1'
TypeError: unsupported operand type(s) for /: ‘int' and ‘str'
Program is running here!

可见,即使Traceback没有消除,但依旧输出了print语句,这就是相当于一个程序的收尾工作(finally)

而且如果程序没有任何错误,finally也会执行

所以可以这么理解:

不管程序有没有异常,finally中的语句必会执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
Python正规则表达式学习指南
Aug 02 Python
使用TensorFlow实现SVM
Sep 06 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
python实现LRU热点缓存及原理
Oct 29 Python
opencv python如何实现图像二值化
Feb 03 Python
Django在Model保存前记录日志实例
May 14 Python
Python加速程序运行的方法
Jul 29 Python
如何用python免费看美剧
Aug 11 Python
Python容器类型公共方法总结
Aug 19 Python
Python 随机按键模拟2小时
Dec 30 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 #Python
Python实现破解12306图片验证码的方法分析
Dec 29 #Python
解决python使用open打开文件中文乱码的问题
Dec 29 #Python
python爬虫获取京东手机图片的图文教程
Dec 29 #Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 #Python
基于并发服务器几种实现方法(总结)
Dec 29 #Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 #Python
You might like
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
python可视化实现KNN算法
2019/10/16 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
pandas-resample按时间聚合实例
2019/12/27 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
简单了解Django项目应用创建过程
2020/07/06 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
服务生自我鉴定
2014/01/22 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
泰山导游词
2015/02/02 职场文书
雷峰塔导游词
2015/02/09 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS