详解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高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
Python中Collection的使用小技巧
Aug 18 Python
python读取word文档的方法
May 09 Python
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
python调用百度API实现人脸识别
Nov 17 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 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
一个程序下载的管理程序(四)
2006/10/09 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
详解redux异步操作实践
2018/08/15 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
Python的多态性实例分析
2015/07/07 Python
Python制作简易注册登录系统
2016/12/15 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python中常见的数制转换有哪些
2020/05/27 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
金融事务专业求职信
2014/04/25 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL