详解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装饰器decorator介绍
Nov 21 Python
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
Python字符串替换实例分析
May 11 Python
解决uWSGI的编码问题详解
Mar 24 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
Python函数装饰器原理与用法详解
Aug 16 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
python实现简单的三子棋游戏
Apr 28 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
AM/FM收音机的安装与调试
2021/03/02 无线电
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
javascript数组克隆简单实现方法
2015/12/16 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
咖啡厅创业计划书范本
2014/01/22 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书