Python try except else使用详解


Posted in Python onJanuary 12, 2021

在原本的try except结构的基础上,Python 异常处理机制还提供了一个 else 块,也就是原有 try except 语句的基础上再添加一个 else 块,即try except else结构。

使用 else 包裹的代码,只有当 try 块没有捕获到任何异常时,才会得到执行;反之,如果 try 块捕获到异常,即便调用对应的 except 处理完异常,else 块中的代码也不会得到执行。

举个例子:

try:
  result = 20 / int(input('请输入除数:'))
  print(result)
except ValueError:
  print('必须输入整数')
except ArithmeticError:
  print('算术错误,除数不能为 0')
else:
  print('没有出现异常')
print("继续执行")

可以看到,在原有 try except 的基础上,我们为其添加了 else 块。现在执行该程序:
请输入除数:4
5.0
没有出现异常
继续执行

如上所示,当我们输入正确的数据时,try 块中的程序正常执行,Python 解释器执行完 try 块中的程序之后,会继续执行 else 块中的程序,继而执行后续的程序。

读者可能会问,既然 Python 解释器按照顺序执行代码,那么 else 块有什么存在的必要呢?直接将 else 块中的代码编写在 try except 块的后面,不是一样吗?

当然不一样,现在再次执行上面的代码:
请输入除数:a
必须输入整数
继续执行

可以看到,当我们试图进行非法输入时,程序会发生异常并被 try 捕获,Python 解释器会调用相应的 except 块处理该异常。但是异常处理完毕之后,Python 解释器并没有接着执行 else 块中的代码,而是跳过 else,去执行后续的代码。

也就是说,else 的功能,只有当 try 块捕获到异常时才能显现出来。在这种情况下,else 块中的代码不会得到执行的机会。而如果我们直接把 else 块去掉,将其中的代码编写到 try except 的后面:

try:
  result = 20 / int(input('请输入除数:'))
  print(result)
except ValueError:
  print('必须输入整数')
except ArithmeticError:
  print('算术错误,除数不能为 0')
print('没有出现异常')
print("继续执行")

程序执行结果为:
请输入除数:a
必须输入整数
没有出现异常
继续执行

可以看到,如果不使用 else 块,try 块捕获到异常并通过 except 成功处理,后续所有程序都会依次被执行。

python  try except else finally 实例

class AError(Exception):
  """AError---exception"""
  print('AError')

class BError(Exception):
  """BError---exception"""
  print('BError')

try:
  # raise AError
  # raise BError
  aaaaa()
except AError:
  print("Get AError")
except BError:
  print("Get BError")
except:
  print("Get Exception")
else:
  print("do else")
finally:
  print("finally")

1.在上面所示的完整语句中try/except/else/finally所出现的顺序必须是try-->except X-->except-->else-->finally,即所有的except必须在else和finally之前,else(如果有的话)必须在finally之前,而except X必须在except之前。否则会出现语法错误。

2.在上面的完整语句中,else语句的存在必须以except X或者except语句为前提,如果在没有except语句的try block中使用else语句会引发语法错误。也就是说else不能与try/finally配合使用。

3.try成功进else,不成功进对应的except;

4.不论是否成功except X,except的判定语句都会执行,只是不进入;对应到以上程序就是不论哪种情况 AError BError都会打印,但是Get AError Get BError 只有抛对应的异常时才会打印。

5.finally所有情况都会执行,可以不写,写了就必须在所有except else等之后;

到此这篇关于Python try except else使用详解的文章就介绍到这了,更多相关Python try except else内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Python 相关文章推荐
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
详解Python3中的迭代器和生成器及其区别
Oct 09 Python
Python中fnmatch模块的使用详情
Nov 30 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
python变量的存储原理详解
Jul 10 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
Python连接字符串过程详解
Jan 06 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 #Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 #Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 #Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 #Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 #Python
python用分数表示矩阵的方法实例
Jan 11 #Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 #Python
You might like
PHP4.04简明安装
2006/10/09 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
Python脚本实现网卡流量监控
2015/02/14 Python
python查找目录下指定扩展名的文件实例
2015/04/01 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
个人简历中的自我评价范例
2013/10/29 职场文书
总经理司机职责
2014/02/02 职场文书
大学军训感言400字
2014/03/11 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
消防安全承诺书
2014/05/22 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
无房证明范本
2014/09/17 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技