详解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的几条建议分享
Feb 10 Python
python读写文件操作示例程序
Dec 02 Python
python多进程操作实例
Nov 21 Python
Python基于动态规划算法计算单词距离
Jul 25 Python
python 容器总结整理
Apr 04 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
python3实现基于用户的协同过滤
May 31 Python
python绘制雪景图
Dec 16 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
Python3如何使用多线程升程序运行速度
Aug 11 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让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Python中设置变量访问权限的方法
2015/04/27 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
软件测试常见笔试题
2012/02/04 面试题
大二自我鉴定范文
2013/10/05 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
关于Python使用turtle库画任意图的问题
2022/04/01 Python