Python try except else使用详解_python

来源:脚本之家  责任编辑:小易  

在原本的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中利用try..except来代替if..else的用法

  • 本文相关:
  • python3.5基础之变量、数据结构、条件和循环语句、break与contin
  • 应用opencv和python进行sift算法的实现详解
  • python计算不规则图形面积算法实现解析
  • python实现代码行数统计示例分享
  • django框架中ajax的使用及避开csrf 验证的方式详解
  • 让python的cookie.py模块支持冒号做key的方法
  • 手把手教你使用python创建微信机器人
  • 对python中数组的几种使用方法总结
  • python文字转语音实现过程解析
  • 详解python设计模式之策略模式
  • python使用xlrd,如何操作excel文档?
  • python xlrd库excel打开操作出问题?
  • python 怎么操作excel
  • python怎么读取excel文件
  • python怎么读取excel文件
  • 问一个关于Python的问题,如果用try,except句型但无法保证try与except...
  • Python新手,Python中except的用法和作用是什么?请指教
  • chunked怎么解析 python
  • 求问:如何用python中的type和try except 来判断一个字符串是否为浮点...
  • python读写excel文件用什么库
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页在python中利用try..except来代替if..else的用法python3.5基础之变量、数据结构、条件和循环语句、break与contin应用opencv和python进行sift算法的实现详解python计算不规则图形面积算法实现解析python实现代码行数统计示例分享django框架中ajax的使用及避开csrf 验证的方式详解让python的cookie.py模块支持冒号做key的方法手把手教你使用python创建微信机器人对python中数组的几种使用方法总结python文字转语音实现过程解析详解python设计模式之策略模式python入门教程 超详细1小时学会pycharm 2020最新永久激活码(附python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍pycharm 2020年最新激活码(亲测python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython发送邮件示例(支持中文邮件标题)python绘制热力图heatmap在python 2.7即将停止支持时,我们为你带来python的twisted框架中使用deferred对象来python 遍历列表提取下标和值的实例完美解决pycharm 不显示代码提示问题python简单删除目录下文件以及文件夹的方用python中的matplotlib绘制方程图像代码pytorch查看torch.tensor和model是否在cupython基于回溯法子集树模板解决旅行商问
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved