Python finally 子句的执行时机


finally子句在try块开始执行后无论是否发生异常都会运行,即使遇到return、break等也会在跳转前执行,适合用于释放资源等必须操作。

python finally 子句的执行时机

在 Python 中,finally 子句主要用于确保某些代码无论是否发生异常都会被执行。理解它的执行时机对编写健壮的程序很重要。

finally 的基本执行规则

finally 子句属于 try-except 语句的一部分,其执行时机如下:

  • 只要 try 块开始执行,无论是否抛出异常,finally 中的代码最终都会运行。
  • 即使 try 或 except 中包含 return、break、continue 等控制流语句,finally 依然会在函数返回或跳出前执行。
  • 如果异常未被 except 捕获,finally 仍会执行,然后异常继续向上抛出。

常见执行场景示例

下面几种情况可以更清楚地说明 finally 的行为:

1. 正常执行流程

try 块中没有异常时,finally 在 try 结束后立即执行。

try:
    print("try 执行")
finally:
    print("finally 执行")
# 输出:
# try 执行
# finally 执行

2. 发生异常但被捕获

except 处理完异常后,finally 依然会执行。

try:
    print(1 / 0)
except ZeroDivisionError:
    print("捕获异常")
finally:
    print("finally 执行")
# 输出:
# 捕获异常
# finally 执行

3. 发生未被捕获的异常

PLC编程入门基础知识 中文doc版 PLC编程入门基础知识 中文doc版

可编程序控制器,英文称Programmable Controller,简称PC。但由于PC容易和个人计算机(Personal Computer)混淆,故人们仍习惯地用PLC作为可编程序控制器的缩写。它是一个以微处理器为核心的数字运算操作的电子系统装置,专为在工业现场应用而设计,它采用可编程序的存储器,用以在其内部存储执行逻辑运算、顺序控制、定时/计数和算术运算等操作指令,并通过数字式或模拟式的输入、输出接口,控制各种类型的机械或生产过程。本平台提供PLC编程入门基础知识下载,需要的朋友们下载看看吧!

PLC编程入门基础知识 中文doc版 1 查看详情 PLC编程入门基础知识 中文doc版

finally 执行后,异常才会被重新抛出。

try:
    print("try")
    raise ValueError("出错")
finally:
    print("清理资源")
# 输出:
# try
# 清理资源
# 然后抛出 ValueError

4. try 中有 return

即使 try 中有 return,finally 也会在 return 之前执行。

def func():
    try:
        return "返回值"
    finally:
        print("finally 执行")
<p>print(func())</p><h1>输出:</h1><h1>finally 执行</h1><h1>返回值</h1><p>

特殊情况注意

虽然 finally 几乎总能执行,但以下情况例外:

  • 程序在 try 块执行前就终止(如 os._exit())。
  • 解释器崩溃或系统断电等极端情况。
  • 在 finally 执行过程中也发生异常或调用 sys.exit()。

基本上就这些。finally 最适合用于释放资源、关闭文件、断开连接等必须执行的操作,保证程序的可靠性。掌握它的执行时机,能避免很多“以为执行了但实际上没执行”的问题。

以上就是Python finally 子句的执行时机的详细内容,更多请关注其它相关文章!


# finally  # ai  # 子句  # 抛出  # 会在  # 浮点  # python  # 唐山淘宝网站建设好处  # 选择网站优化  # 网站的优化公司  # 温州seo哪家质量好  # 宜都第三方智能营销推广  # 南昌县运营营销推广优化  # 门户网站建设方案咨询  # 定州市网站推广哪里专业  # 抖音营销策略和推广方式  # 潼南区的可靠网站建设  # 相关文章  # 它是  # 才会  # 返回值  # 未被  # 中有 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: c++如何实现观察者设计模式_c++行为型设计模式实战  多多买菜门店端app订单查看方法  PHP安全加载非公开目录图片与动态内容类型处理指南  铁路12306怎么申请退票_铁路12306退票申请操作流程  windows10怎么开启wsl_windows10安装linux子系统教程  钉钉任务无法提醒如何处理 钉钉任务提醒优化方法  抖音号已注销怎么解绑企业认证?不解绑企业认证会怎样?  126手机126邮箱登录_126邮箱手机登录入口官网  有道AI翻译入口 智能写作官方网站入口  花生壳内网映射新方案  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  Teambition网盘如何共享文件  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  风车动漫官网首页入口登录 风车动漫在线观看正版地址  iPhone 13 mini如何清理Safari缓存_iPhone 13 mini浏览器缓存清理方法  C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析  微信朋友圈怎么设置三天可见 微信朋友圈设置指定天数可见步骤【教程】  申通快递物流信息查询 申通快递包裹状态追踪  使用VS Code调试Python代码:从入门到精通  J*aScript中高效处理用户输入:从Keyup事件到表单提交的优化实践  抖音号升级成企业资质怎么弄?有什么好处?  Three.js中动态更换3D模型纹理的教程  《真我》申请退款方法  如何取消数字签名  毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  《东方航空》添加乘机人方法  解决J*aScript动态图片上传中ID重复问题:在同一页面显示多张独立图片  多闪APP官方下载安装入口_多闪最新版本获取入口  J*aScript类型数组_TypedArray使用  使用CSS :has() 选择器实现父元素样式控制:从子元素反向应用样式  我的世界游戏平台入口 我的世界官方官网直达链接  PHP 4 函数中引用参数的默认值限制与解决方案  《procreate》绘制渐变效果教程  三星M34录音变声问题_Samsung M34麦克风调整  如何用Golang优化微服务间请求性能_Golang 微服务请求性能优化方法  火柴人战争网页版在线玩  《oppo商城》维修服务位置  J*aScript包管理器_Npm与Yarn对比  c++类和对象到底是什么_c++面向对象编程基础  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  从HTML表单获取逗号分隔值并转换为NumPy数组进行预测  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧  优化Asyncio嵌套函数调度:使用生产者-消费者模式实现并发流处理  j*a中ArrayBlockingQueue的使用  win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】  Apple Music无故扣费引质疑  拷贝漫画2025网页版入口 拷贝漫画官网免费看全集  什么是Satis,如何用它搭建一个私有的composer仓库? 

 2025-11-21

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.