专栏首页测试邦8、python中的try/except/else/finally语句

8、python中的try/except/else/finally语句

用实例来解释下Python中的try/except/else/finally语句的执行顺序

1、如果try中的语句块执行成功,则会先执行try,再执行else,再执行finally

a='abc'
try:
    print(a[0])
except IndexError as e:
    print('AAA')
except IOError as e:
    print('BBB')
else:
    print('CCC')
finally:
    print('DDD')

运行结果为:

C:\Python36\python.exe E:/python/test1/day5/try.py
a
CCC
DDD

2、如果try语句块未执行成功,出现异常,则从except中找对应的异常,能找到就打印,然后去执行finally


a='abc'


try:
    print(a[9])
except IOError as e:
    print('AAA')
except IndexError as e:
    print('BBB')
else:
    print('CCC')
finally:
    print('DDD')

上面a[9] 会导致IndexError,即try语句块报IndexError异常,那么去第一个except找对应的错误,第一个是IOError,不匹配,继续从下面的except找,第二个是IndexError,匹配,执行该语句块,打印‘BBB’,然后打印finally语句。

执行结果:

C:\Python36\python.exe E:/python/test1/day5/try.py
BBB
DDD

3、如果try语句块未执行成功,出现异常,则从except中找对应的异常,当在所有的except中都找不到匹配的异常,则会将异常抛出,然后去执行finally。(并不是匹配不到执行else)

a='abc'
try:
    print(a[9])
except IOError as e:
    print('AAA')
except ImportError as e:
    print('BBB')
else:
    print('CCC')
finally:
    print('DDD')

执行结果:

C:\Python36\python.exe E:/python/test1/day5/try.py
Traceback (most recent call last):
DDD
  File "E:/python/test1/day5/try.py", line 4, in <module>
    print(a[9])
IndexError: string index out of range

Process finished with exit code 1

4、如果我们想匹配不到异常则统一执行某个动作怎么办?使用except Exception as e语句

a='abc'


try:
    print(a[9])
except IOError as e:
    print('AAA')
except ImportError as e:
    print('BBB')
except Exception as e:
    print('EEE')
else:
    print('CCC')
finally:
    print('DDD')

执行结果:

C:\Python36\python.exe E:/python/test1/day5/try.py
EEE
DDD
Process finished with exit code 0

本文分享自微信公众号 - 测试邦(testerbang),作者:Strom

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CentOS Robot Framework环境搭建

    Robot Framework是基于python的测试框架,基本上python能做到的事情它都能做到,Robot Framework最好的有点是针对于编码基础...

    测试邦
  • Python简介及其环境搭建

    Python是一门编程语言,因此它和其他编程语言一样可以用来做很多事情,如自动化脚本开发、爬虫脚本开发、web服务开发、机器学习、文本处理、科学技术等。

    测试邦
  • selenium grid搭建

    selenium grid可以同时在不同机器上测试不同浏览器,包含一个hub和至少一个node。node会发送配置信息到hub,hub记录并跟踪每一个node的...

    测试邦
  • python中的异常示例

    http://www.cnblogs.com/fnng/p/3518202.html

    py3study
  • python 的err输出BaseExc

    try: print('try...') r = 10 / 0 print('result:', r) except BaseException as e: p...

    py3study
  • python的异常处理

    try: print(x) print('hello')     l=[1,2,3]     l=[0] except NameErroras e: pr...

    py3study
  • 9.python异常处理

    常见异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x FileNotFoundError ...

    zhang_derek
  • python3-抛出、捕获异常

    py3study
  • Python进阶学习笔记【干货分享】

    本篇为Python进阶干货系列第四篇,主要为大家详细介绍了Python条件判断、循环语句、循环控制、迭代器和生成器以及异常

    商业新知
  • python-基础案例

    范例一: 练习:元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,...

    洗尽了浮华

扫码关注云+社区

领取腾讯云代金券