python异常处理

try:这里放置可能出错的代码
except Exception as e:这里放置try出现异常时,对于异常进行处理的代码
else:这里放置try没有出现异常继续执行的代码
finally:这里放置的是无论代码是否出现异常都会执行的代码

作为一名python初学者,我对异常处理的finally很感兴趣

对于finally功能的一般解释

无论 try 块是否引发错误,都将始终执行 finally 块
开始看起来没什么问题
比如下面这段代码:

def add_num():try:num1 = 1num2 = 0res = num1 / num2print(f'结果是:{res}')except Exception as e:print(f"出错了,错误类型是:{e}")finally:print("add_num函数执行完毕")print(add_num())# 出错了,错误类型是:division by zero
# add_num函数执行完毕
# None

但是如果except语句里的print变成了return,会怎么样呢
我们知道函数里遇到return 程序就结束了,但是你看下面的代码,奇怪的事出现了

def add_num():try:num1 = 1num2 = 0res = num1 / num2except Exception as e:return f"出错了,错误类型是:{e}"finally:print("add_num函数执行完毕")print(add_num())# add_num函数执行完毕
# 出错了,错误类型是:division by zero

异常处理中遇到return的时候竟然跳过了,跑去执行finally里的语句,最后才执行return

遇到这种情况,我很是疑惑,专门去查了资料,才明白为什么这样

对异常处理中finally正确完整的解释

无论前面try和except怎么样,python一定会保证finally的语句得执行完!

Python的一切设计都是围绕着这个核心思想来的,费尽心机就是在做这件事情。
因此,前面try子句(clause),或者except子句中如果有会导致程序终止的异常,比如return,那么 python会先把这个封存起来,等到finally执行完再把异常抛出来
所以你能看到异常出现在 finally输出结果之后的,意不意外?

Python异常处理之finally相关推荐

  1. python示例异常处理与程序调试_笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  2. Python 异常处理--raise函数用法

    Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...

  3. python异常处理--try except else raise finally

    python异常处理--try except else raise finally 参考文章: (1)python异常处理--try except else raise finally (2)http ...

  4. python 异常处理 try except

    python 异常处理 try except 参考文章: (1)python 异常处理 try except (2)https://www.cnblogs.com/brave1/p/10252739. ...

  5. python异常处理(基础)

    python异常处理(基础) 参考文章: (1)python异常处理(基础) (2)https://www.cnblogs.com/fnng/p/3518202.html 备忘一下.

  6. python处理流程-Python异常处理大全(二)

    原标题:Python异常处理大全(二) 本文是Python异常处理教程的第二部分,上部分我们简单的介绍了几种异常,及其处理办法,这部分我们将更详细地对Python中产生的异常处理方法进行探讨. 函数使 ...

  7. 十一、Python异常处理

    Python异常处理 异常抛出机制,为程序开发人员提供了一种在运行时发现错误,进行回复处理,然后继续执行的能力 #!/usr/bin/python try: open('abc.txt') excep ...

  8. Python异常处理体系简介(1)

    http://developer.51cto.com/art/200902/111535.htm Python异常处理体系 1.Python内建异常体系结构 The class hierarchy f ...

  9. python异常处理_汇总三大python异常处理、自定义异常、断言原理与用法分析

    本文实例讲述了python异常处理.自定义异常.断言原理与用法.分享给大家供大家参考,具体如下: 什么是异常: 当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象, ...

  10. 【Python】1054 求平均值(Python异常处理练习)

    1. 题目 2. 代码 重坑,读题不仔细,导致耗时多. 题目中合法数字当只用一个的时候,输出的结果中的是number,而不是numbers # https://pintia.cn/problem-se ...

最新文章

  1. UA MATH566 统计理论1 充分统计量例题答案3
  2. 大数据启蒙--理论知识
  3. eclipse下拉框里的选项怎么鼠标单击表判断_领导让我预测下一年销量,怎么办?...
  4. lol最克制诺手的英雄_上路克制诺手的英雄,他只需要平A就好了!
  5. 中国开源年会 COSCon 2018 今起接受报名!
  6. Linux NTP时间服务器
  7. 寻找最大的k个数问题
  8. C++ delete的三种面貌
  9. ThreadLocal 遇上线程池的问题及解决办法
  10. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割
  11. 深度学习:循环神经网络RNN
  12. 第一个shell脚本——修改配置文件
  13. java中元数据是什么_java 元数据
  14. 【SDPVRP问题】基于遗传算法求解同时取送货的车辆路径问题含Matlab代码
  15. 视频加密并上传至oss实现高并发访问
  16. ppoe拨号被远程计算机终止,Windows各操作系统常见PPPoE拨号错误代码说明
  17. 现有开发语言以及适用范围
  18. DELPHI盒子FTP登录地址及用户密码
  19. openldap中的Mirror mode模式中的主主同步
  20. 构建地形系统(翻译)1

热门文章

  1. Leetcode Nim 游戏
  2. 警惕求职面试中的语言陷阱
  3. Jenkins知识概括
  4. 如何驯服初级小怪——printf(主线任务)
  5. 拼接合并两个byte数组
  6. 用城市大脑驱动智慧交通 高德与阿里云的琴瑟和鸣
  7. 【MM小贴士】副产品 工单核算
  8. 写代码也能防沉迷?「反内卷 防沉迷插件 wlb-webpack-plugin 开发纪录」
  9. 清晰理解Yii的事件和行为
  10. Glide源码阅读之建造者(builder)模式2【RequestBuilder】