教程 python tutorial

try-except-finally 结构

在 Python 中,try-except-finally 结构是一种用于异常处理的机制。通过这种结构,我们可以捕获和处理程序运行中可能出现的错误,同时确保在程序结束时执行必要的清理操作。

try-except 语句

try-except 语句用于捕获并处理异常。try 块中包含可能引发异常的代码,except 块用于捕获并处理特定的异常类型。

python
try:
    x = 1 / 0  # 引发除零错误
except ZeroDivisionError as e:
    print("错误发生:", e)  # 输出:错误发生: division by zero

捕获多种异常

可以在同一个 try 语句中捕获多种不同类型的异常,每个异常类型可以有独立的处理方式。

python
try:
    x = int("abc")  # 引发 ValueError
except ZeroDivisionError as e:
    print("除零错误:", e)
except ValueError as e:
    print("值错误:", e)  # 输出:值错误: invalid literal for int() with base 10: 'abc'

捕获所有异常

使用 except 块不指定异常类型时,表示捕获所有类型的异常。建议仅在确实需要的情况下使用这种方式,因为它会捕获所有异常类型,可能隐藏程序中的错误。

python
try:
    x = 1 / 0
except Exception as e:
    print("捕获到异常:", e)  # 输出:捕获到异常: division by zero

else 语句

else 块用于在没有异常发生时执行的代码。如果 try 块没有引发异常,else 块中的代码将会执行。

python
try:
    result = 10 / 2
except ZeroDivisionError as e:
    print("发生错误:", e)
else:
    print(f"运算结果: {result}")  # 输出:运算结果: 5.0

finally 语句

finally 块中的代码无论是否发生异常都会被执行。常用于执行清理操作,如关闭文件、释放资源等。

python
try:
    f = open("file.txt", "r")
    content = f.read()
except FileNotFoundError as e:
    print("文件未找到:", e)
finally:
    print("文件处理完毕")  # 输出:文件处理完毕
    f.close()  # 无论是否发生异常,都会关闭文件

finally 用法示例

python
try:
    x = 1 / 0  # 引发除零错误
except ZeroDivisionError:
    print("除以零错误")
finally:
    print("清理工作完成")  # 输出:清理工作完成

总结

  • try-except 结构用于捕获并处理异常;
  • else 语句块在没有异常发生时执行;
  • finally 语句块保证无论是否有异常都会执行,常用于清理工作。