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 可爱的大小写
Sep 06 Python
python list 合并连接字符串的方法
Mar 09 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
Python list与NumPy array 区分详解
Nov 06 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python Matplotlib简易教程(小白教程)
Jul 28 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 Python
python中time.ctime()实例用法
Feb 03 Python
Python如何让字典保持有序排列
Apr 29 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
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
JSON 教程 json入门学习笔记
2020/09/22 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python编写计算器功能
2019/10/25 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
Linux的文件类型
2016/07/05 面试题
个人自我鉴定写法
2013/11/30 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
个人先进事迹材料
2014/12/29 职场文书