详解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 相关文章推荐
python实现简单的TCP代理服务器
Oct 08 Python
Python中使用Inotify监控文件实例
Feb 14 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
wxPython的安装与使用教程
Aug 31 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
深入解析神经网络从原理到实现
Jul 26 Python
python将四元数变换为旋转矩阵的实例
Dec 04 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
Python调用shell命令常用方法(4种)
May 11 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
Jun 18 Python
基于Python实现的购物商城管理系统
Apr 27 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
PHP新手上路(八)
2006/10/09 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
js实现分割上传大文件
2016/03/09 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
vue弹窗插件实战代码
2018/09/08 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
python脚本替换指定行实现步骤
2017/07/11 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
利用python循环创建多个文件的方法
2018/10/25 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
性能服装:HYLETE
2018/08/14 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
物流专业大学的自我评价
2014/01/11 职场文书
创卫工作总结2015
2015/04/22 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL