Python异常处理机制结构实例解析

山间有风
山间有风
发布时间:2026-10-14| 3人浏览过
原创

本文详细解析Python异常处理的完整语法结构,涵盖try、except、else及finally块的使用规则与执行顺序。重点阐述finally块的强制执行特性及其在方法中止语句(如return、raise)中的优先级逻辑,通过代码实例说明避免在finally中使用return的重要性,帮助开发者掌握Python错误处理的正确实践。

Python异常处理语法结构

Python 异常处理的完整语法结构由多个关键字组成,具体形式如下:


try:
  #业务实现代码
except Exception1 as e:
  #异常处理块1
  ...
except Exception2 as e:
  #异常处理块2
  ...
#可以有多个 except
...
else:
  #正常处理块
finally :
  #资源回收块
  ...

整个异常处理结构的执行流程如图 1 所示。

各模块使用规则

需要特别注意的是,在异常处理结构中,try 块是唯一必须存在的部分,具体规则如下:

  • 若未定义 try 块,则后续不得出现 except、else 或 finally 块。同时,单独的 try 块也是非法的,必须搭配 except 或 finally 使用,即采用 try-except 或 try-finally 结构。
  • except、else 和 finally 块均为可选配置,且可以同时存在。
  • 允许定义多个 except 块,但捕获父类异常的 except 块必须排在捕获子类异常的 except 块之后。
  • 所有 except 块必须紧跟在 try 块之后,而 finally 块必须位于所有 except 块之后。
  • 若需使用 else 块,其前置条件必须包含 try 和 except 块。

finally与else的区别

许多初学者容易混淆 finally 与 else 的区别,此处重点说明:else 语句块仅在未发生异常时执行,而 finally 语句无论是否发生异常均会执行。此外,无论是正常退出、因异常退出,还是通过 break、continue 或 return 语句退出,finally 语句块都会执行。

强制退出时的特殊情况

需注意,若程序中执行了强制退出 Python 解释器的语句(例如 os._exit(1)),则 finally 语句将无法得到执行。示例如下:


import os
try:
  os._exit(1)
finally:
  print("执行finally语句")

运行上述程序,无任何输出。因此,除非在 try 或 except 块中调用了退出 Python 解释器的方法,否则无论 try 或 except 块中执行何种代码或出现何种情况,异常处理的 finally 块总会被执行。

finally块中return/raise的影响

此外,通常情况下不应在 finally 块中使用如 return 或 raise 等导致方法中止的语句(raise 语句将在后文介绍)。一旦在 finally 块中使用了 return 或 raise 语句,将导致 try 或 except 块中的 return、raise 语句失效。参考以下程序:


def test():
  try:
    # 因为finally块中包含了return语句
    # 所以下面的return语句失去作用
    return True
  finally:
    return False
print(test())

上述程序在 finally 块中定义了 return False 语句,这将导致 try 块中的 return True 失去作用。运行该程序,输出结果为:

False

同样,若 Python 程序在 try 或 except 块中包含 return 或 raise 语句,当解释器执行到该语句时,会先查找 finally 块。若未找到 finally 块,程序将立即执行 return 或 raise 语句;反之,若找到 finally 块,系统会立即开始执行 finally 块,待 finally 块执行完毕后,系统再跳回执行 try 或 except 块中的 return 或 raise 语句。

然而,若在 finally 块中也使用了 return 或 raise 等导致方法中止的语句,finally 块将中止方法,系统将不再跳回执行 try 或 except 块中的任何代码。

应尽量避免在 finally 块中使用 return 或 raise 等导致方法中止的语句,否则可能导致一些意想不到的结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。