如下所示:

def test1():

try:

print('to do stuff')

raise Exception('hehe')

print('to return in try')

return 'try'

except Exception:

print('process except')

print('to return in except')

return 'except'

finally:

print('to return in finally')

return 'finally'

test1Return = test1()

print('test1Return : ' + test1Return)

输出:

to do stuff

process except

to return in except

to return in finally

test1Return : finally

在 try 中 raise一个异常,就立刻转入 except 中执行,在except 中遇到 return 时,就强制转到 finally 中执行, 在 finally 中遇到 return 时就返回

def test2():

try:

print('to do stuff')

print('to return in try')

return 'try'

except Exception:

print('process except')

print('to return in except')

return 'except'

finally:

print('to return in finally')

return 'finally'

test2Return = test2()

print('test1Return : ' + test2Return)

输出:

to do stuff

to return in try

to return in finally

test2Return : finally

这里在 try 中没有抛出异常,因此不会转到 except 中,但是在try 中遇到return时,也会立即强制转到finally中执行,并在finally中返回

test1和test2得到的结论:

无论是在try还是在except中,遇到return时,只要设定了finally语句,就会中断当前的return语句,跳转到finally中执行,如果finally中遇到return语句,就直接返回,不再跳转回try/excpet中被中断的return语句

def test3():

i = 0

try:

i += 1

print('i in try : %s'%i)

raise Exception('hehe')

except Exception:

i += 1

print('i in except : %s'%i)

return i

finally:

i += 1

print ('i in finally : %s'%i )

print('test3Return : %s'% test3())

输出:

i in try : 1

i in except : 2

i in finally : 3

test3Return : 2

def test4():

i = 0

try:

i += 1

return i

finally:

i += 1

print ('i in finally : %s'%i )

print('test4Return : %s' % test4())

输出

i in finally : 2

test4Return : 1

test3和test4得到的结论:

在except和try中遇到return时,会锁定return的值,然后跳转到finally中,如果finally中没有return语句,则finally执行完毕之后仍返回原return点,将之前锁定的值返回(即finally中的动作不影响返回值),如果finally中有return语句,则执行finally中的return语句。

def test5():

for i in range(5):

try:

print('do stuff %s'%i)

raise Exception(i)

except Exception:

print('exception %s'%i)

continue

finally:

print('do finally %s'%i)

test5()

输出

do stuff 0

exception 0

do finally 0

do stuff 1

exception 1

do finally 1

do stuff 2

exception 2

do finally 2

do stuff 3

exception 3

do finally 3

do stuff 4

exception 4

do finally 4

test5得到的结论:

在一个循环中,最终要跳出循环之前,会先转到finally执行,执行完毕之后才开始下一轮循环

python try catch finally执行顺序_对python中的try、except、finally 执行顺序详解相关推荐

  1. python布尔型数组_对numpy中布尔型数组的处理方法详解

    布尔数组的操作方式主要有两种,any用于查看数组中是否有True的值,而all则用于查看数组是否全都是True. 如果用于计算的时候,布尔量会被转换成1和0,True转换成1,False转换成0.通过 ...

  2. 用了python之后笔记本卡了怎么办_造成笔记本电脑卡原因 笔记本电脑卡解决方法【详解】...

    在工作和生活中使用笔记本的时候,大家有没有遇到笔记本电脑非常的卡, 造成 笔记本电脑 卡原因 是什么呢?很多用户不知道是什么原因造成的,有技术人员告诉我们,有可能是因为网络自身问题.系统资源不足.网线 ...

  3. vs 启动调用的目标发生异常_协程中的取消和异常 | 取消操作详解

    在日常的开发中,我们都知道应该避免不必要的任务处理来节省设备的内存空间和电量的使用--这一原则在协程中同样适用.您需要控制好协程的生命周期,在不需要使用的时候将它取消,这也是结构化并发所倡导的,继续阅 ...

  4. jupyter 代码自动补全_在 Pycharm 中安装及使用 Jupyter (图文详解)

    Pycharm 更新了对 Jupyter  的功能支持,结合 IntelliJ 的自动补全代码,自动格式化代码,执行调试,版本控制,以及大量的插件支持. 让你在高颜值环境下,高效编写代码,效果如下: ...

  5. java drawimage 参数_小程序中canvas的drawImage方法参数使用详解

    最近在开发小程序,海报生成的过程中,要在carvas中不断去添加图片,对小程序的drawImage参数不是很明确,这次解惑. 示例代码 有三个版本的写法: drawImage(imageResourc ...

  6. vue输入框输入触发事件_.vue文件中监听input输入事件oninput详解

    .vue文件其实是一个组件,关于它的说明我之前也写过一篇文章,地址:.vue文件,今天这篇文章要讲的是.vue文件中监听input的输入值变化事件.需求是这页面中,改变input的值,就调用一个事件, ...

  7. pythonbool类型数组生成_对numpy中布尔型数组的处理方法详解

    布尔数组的操作方式主要有两种,any用于查看数组中是否有True的值,而all则用于查看数组是否全都是True. 如果用于计算的时候,布尔量会被转换成1和0,True转换成1,False转换成0.通过 ...

  8. java 抽象 属性_在java中如何定义一个抽象属性示例详解

    前言 本文主要给大家介绍的是在java中定义一个抽象属性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给 ...

  9. lstm 输入数据维度_[mcj]pytorch中LSTM的输入输出解释||LSTM输入输出详解

    最近想了解一些关于LSTM的相关知识,在进行代码测试的时候,有个地方一直比较疑惑,关于LSTM的输入和输出问题.一直不清楚在pytorch里面该如何定义LSTM的输入和输出.首先看个pytorch官方 ...

  10. php回调函数和匿名函数吗,php回调函数_关于php中匿名函数与回调函数的详解

    摘要 腾兴网为您分享:关于php中匿名函数与回调函数的详解,壹学车,小天才,尚游戏,厦门百姓等软件知识,以及微信一键转发工具,幸运抽奖系统,文字识别app,垃圾清理管家,王者荣耀起名神器,叮咚出行,世 ...

最新文章

  1. C# Socket Server 收不到数据
  2. python基础知识整理-Python 重点知识整理(基于Python学习手册第四版)
  3. 计算机网络传输复用技术,计算机网络 23-24 复用技术 数字传输.ppt
  4. 阿里巴巴港股股价创历史新高 市值超6.1万亿港元
  5. Spark的新方案UnifiedMemoryManager内存管理模型分析
  6. 南昌工程学院计算机考试题库和答案,南昌工程学院 语试题答案.doc
  7. windows浏览器访问虚拟机开的rabbitmq服务,无法访问
  8. 华硕B365能装服务器系统吗,原生支持Win7,大师级B365主板来了! 华硕PRIME B365M-A主板深度体验-华硕主板bios设置图解...
  9. Pod2g全面回归越狱界 iOS 6越狱曙光来临
  10. oracle 怎么写报表,Oracle reports提供的六种风格报表格式
  11. 计算机显示在屏幕上怎么取消,电脑显示屏显示的九宫格怎样取消掉
  12. 一篇文章带你全面了解“电脑”内外组成
  13. 以作回顾、以作借鉴、以作鼓励
  14. 随堂记录1--硬件-安装系统-重定向-cp-mv-rm-find-alias-显示20-30行-替换find+sed-selinux-iptables-LANG...
  15. 信息技术是指利用电子计算机和现代通信手段实现获取、传递、存储、处理、显示、分配信
  16. cv::imread读不出图片的解决办法
  17. Jmeter阶梯式等值压测-详细实战教程(一)
  18. ubuntu14.04+cuda8.0(gtx1080)下tensorflow的安装
  19. 进制转化——十进制转二进制
  20. 浙里办H5微应用开发流程

热门文章

  1. 怎么检测计算机硬件好坏,驱动人生怎么看电脑硬件 硬件检测教程介绍
  2. 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解
  3. python之从文件中按行读取数据
  4. Ubuntu14.04-LAMP环境搭建
  5. js中创建form表单
  6. c++学习笔记之基础---类内声明线程函数的调用
  7. 维监控利器Nagios:概念、结构和功能
  8. 18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列
  9. 5-4日 socket套接字
  10. [BZOJ 4563]放棋子