教程 python tutorial

异常类型与处理机制

异常处理是程序中处理错误和异常情况的关键技术。通过异常处理,我们可以避免程序因为错误而中断,并且可以根据不同的异常类型执行不同的处理逻辑。

异常类型

Python 中有多种内建的异常类型,每种类型表示不同的错误情况。常见的异常类型包括:

  • ZeroDivisionError:除以零时抛出的异常
  • ValueError:传入函数的值类型不符合要求时抛出的异常
  • IndexError:索引超出序列范围时抛出的异常
  • FileNotFoundError:文件未找到时抛出的异常
  • TypeError:传入错误类型的参数时抛出的异常
  • KeyError:访问不存在的字典键时抛出的异常

例如:

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

异常处理机制

Python 提供了 try、except、else 和 finally 语句来处理异常。其基本结构如下:

python
try:
    # 可能引发异常的代码
    pass
except <异常类型> as e:
    # 异常处理代码
    pass
else:
    # 如果没有异常,执行的代码
    pass
finally:
    # 无论是否有异常,都执行的代码
    pass

try 和 except

try 块中放置可能引发异常的代码,except 块捕获并处理异常。

python
try:
    result = 10 / 0
except ZeroDivisionError as e:
    print("错误:", e)  # 输出:错误: division by zero

else 和 finally

else 块在 try 块没有引发异常时执行,finally 块无论是否有异常都会执行。

python
try:
    number = int(input("请输入一个整数: "))
except ValueError as e:
    print("无效的输入")
else:
    print(f"你输入的数字是: {number}")
finally:
    print("程序执行完毕")

自定义异常

除了使用内建异常类型外,我们还可以通过继承 Exception 类来创建自定义的异常类型。

python
class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(self.message)

try:
    raise CustomError("自定义错误发生")
except CustomError as e:
    print(f"捕获到自定义异常: {e}")  # 输出:捕获到自定义异常: 自定义错误发生

异常链

在处理异常时,有时需要在一个异常的处理过程中抛出另一个异常。Python 支持异常链,它允许我们保留原始异常信息。

python
try:
    raise ValueError("初始错误")
except ValueError as e:
    raise RuntimeError("处理过程中发生错误") from e

总结

  • Python 提供了丰富的异常类型,用于表示不同的错误情况;
  • 通过 try、except、else 和 finally 可以灵活地处理异常;
  • 我们可以通过自定义异常类型和异常链来增强异常处理的灵活性。