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通过websocket与js客户端通信示例分析
Jun 25 Python
python网络编程之读取网站根目录实例
Sep 30 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
python学生管理系统代码实现
Apr 05 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
Python笔记之代理模式
Nov 20 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
Python爬虫之爬取二手房信息
Apr 27 Python
Python实现8种常用抽样方法
Jun 27 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python实现批量下载文件
2015/05/17 Python
Django与JS交互的示例代码
2017/08/23 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
通过cmd进入python的实例操作
2019/06/26 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
Python使用xpath实现图片爬取
2020/09/16 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
Python函数调用追踪实现代码
2020/11/27 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
幼儿园教师工作制度
2014/01/22 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
安全先进班组材料
2014/12/26 职场文书
迎新生欢迎词
2015/01/23 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL