如何在Python中处理异常?

2025年9月17日 by admin

在 Python 中,异常处理用于捕获并处理程序中出现的错误,确保程序的稳定性。通过异常处理,可以避免程序崩溃,并采取适当的措施来处理错误。

Python 使用 tryexceptelsefinally 语句来处理异常。

1. tryexcept

try 语句用于包含可能发生异常的代码块。如果 try 中的代码抛出异常,程序会跳转到相应的 except 语句处理异常。

基本语法:

try:
    # 可能发生异常的代码
except ExceptionType:
    # 处理异常的代码

示例:

try:
    x = 10 / 0  # 会引发 ZeroDivisionError
except ZeroDivisionError:
    print("除数不能为零")

输出:

除数不能为零

2. 捕获不同类型的异常

你可以通过多个 except 语句捕获不同类型的异常。例如,可以分别捕获 ZeroDivisionErrorValueError

示例:

try:
    num = int(input("请输入一个数字: "))  # 可能引发 ValueError
    result = 10 / num  # 可能引发 ZeroDivisionError
except ValueError:
    print("请输入有效的数字")
except ZeroDivisionError:
    print("除数不能为零")

3. 使用 else 语句

如果 try 语句没有引发任何异常,那么 else 语句将会执行。else 语句通常用于在没有异常时执行一些操作。

示例:

try:
    x = 10 / 2
except ZeroDivisionError:
    print("除数不能为零")
else:
    print("操作成功,结果为:", x)

输出:

操作成功,结果为: 5.0

4. 使用 finally 语句

finally 语句会在 tryexcept 块之后无论是否发生异常都会执行。通常用于清理工作,如关闭文件、释放资源等。

示例:

try:
    file = open("example.txt", "r")
    # 执行文件操作
except FileNotFoundError:
    print("文件未找到")
finally:
    file.close()  # 即使发生异常也会执行
    print("文件已关闭")

5. 捕获所有异常

如果你想捕获所有异常,而不是特定类型的异常,可以使用 except 后不指定异常类型。但这样做一般不推荐,因为捕获所有异常可能会隐藏程序中的潜在问题。

示例:

try:
    x = 10 / 0
except:
    print("发生了一个错误")

6. 获取异常信息

你可以通过 as 关键字获取异常对象,从而查看详细的错误信息。

示例:

try:
    x = 10 / 0
except ZeroDivisionError as e:
    print(f"发生异常: {e}")

输出:

发生异常: division by zero

总结

  • 使用 try 来捕获异常。
  • 使用 except 处理异常。
  • 使用 else 在没有异常时执行代码。
  • 使用 finally 进行清理操作,确保代码始终执行。
  • 可以捕获不同类型的异常并针对性地处理。
  • 异常信息可以通过 as 获取。

这种结构使得你能够灵活地管理程序中的错误,提高程序的健壮性和可维护性。