avatar

RWO.cc

读一次写一次

  • 首页
  • 搭建手册
  • 笔记
  • 短视频
  • 关于
  • 🌈200粉丝🌈
Home `try`、`except`、`else` 和 `finally` 语句的执行顺序
文章

`try`、`except`、`else` 和 `finally` 语句的执行顺序

Posted 2024-08-28 Updated 2024-08- 26
By RWO.
4~6 min read

在 Python 中,try、except、else 和 finally 语句用于异常处理,并且它们有特定的执行顺序。这些语句可以帮助我们在代码中捕获和处理异常,同时确保无论是否发生异常,特定的代码块都会被执行。下面详细解释这些语句的执行顺序,并通过示例代码进行说明。

执行顺序

  1. try 块:首先执行 try 块中的代码。这个块中包含可能会引发异常的代码。

  2. except 块:如果在 try 块中发生了异常,并且这个异常被 except 捕获,那么 except 块中的代码将会执行。如果没有发生异常,except 块将被跳过。

  3. else 块:else 块中的代码只有在 try 块中没有发生任何异常时才会执行。如果发生了异常,else 块将被跳过。

  4. finally 块:无论是否发生异常,finally 块中的代码都会被执行。这通常用于释放资源或执行清理操作。

示例代码

try:
    # 可能会发生异常的代码
    result = 10 / 2
except ZeroDivisionError as e:
    # 发生除零异常时执行的代码
    print("发生除零异常")
else:
    # 没有发生异常时执行的代码
    print("计算成功,结果是:", result)
finally:
    # 无论是否发生异常都会执行的代码
    print("执行完成")

情况 1:没有发生异常

如果 try 块中的代码执行成功(即 10 / 2 没有引发异常),程序的执行顺序如下:

  1. try 块中的代码成功执行。
  2. 没有异常发生,跳过 except 块。
  3. 执行 else 块中的代码,输出计算结果。
  4. 执行 finally 块中的代码。

输出结果:

计算成功,结果是: 5.0
执行完成

情况 2:发生异常

如果 try 块中的代码引发了 ZeroDivisionError 异常(如 10 / 0),程序的执行顺序如下:

  1. try 块中的代码引发异常。
  2. 触发 except 块中的代码,处理异常。
  3. else 块被跳过,不执行。
  4. 执行 finally 块中的代码。

输出结果:

发生除零异常
执行完成

总结

  • try 块:总是首先执行,包含可能会引发异常的代码。
  • except 块:在 try 块中发生指定的异常时执行,用于处理异常。
  • else 块:在 try 块没有引发任何异常时执行。
  • finally 块:无论是否发生异常,都会在最后执行,通常用于资源释放和清理操作。

通过正确使用这些异常处理语句,可以编写更加健壮和可靠的代码,确保即使在异常情况下,程序也能优雅地处理错误并完成必要的清理工作。

短视频
每日一点 短视频 Python
License:  CC BY 4.0
Share

Further Reading

Nov 3, 2024

什么是 python 的闭包

在 Python 中,闭包(Closure)是一种函数对象,它不仅包含了函数的代码,还包含了函数创建时的环境变量。这意味着闭包可以“记住”其外部作用域中的变量,即使在外部作用域已经结束后,闭包仍然可以访问这些变量。 函数可以访问他被创建时所处的上下文环境,这被称为闭包。 闭包的基本特征 嵌套函数:闭

Nov 2, 2024

使用argparse模块解析命令行参数

在 Python 中,argparse 模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse 模块解析命令行参数的详细介绍和示例。 基本用法 示例:简单的命令行参数解析 首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的

Nov 1, 2024

Python中的二维码生成与解析(花里胡哨)

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。 Qrcode 库简介 qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

OLDER

Syncthing – 数据同步利器

NEWER

深拷贝与浅拷贝

Recently Updated

  • 什么是 python 的闭包
  • 使用argparse模块解析命令行参数
  • Python中的二维码生成与解析(花里胡哨)
  • Python中的二维码生成与解析(基础使用)
  • 使用platform模块获取系统信息

Trending Tags

学习 Git 工具 SQL docker-compose 每日一点 快捷键 Flink fastapi Windows

Contents

©2025 RWO.cc. Some rights reserved.

Using the Halo theme Chirpy