Python 异常处理入门

异常处理是 Python 的核心技能,本文介绍 try/except/finally 的用法。

1. 基本结构

try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零")

try-except-else

try:
    result = 10 / 2
except ZeroDivisionError:
    print("除以零错误")
else:
    print(f"结果是 {result}")  # 只有没有异常时执行

try-except-finally

try:
    f = open("file.txt")
    content = f.read()
finally:
    f.close()  # 总会执行

完整结构

try:
    result = x / y
except ZeroDivisionError:
    print("除以零")
else:
    print("result is", result)
finally:
    print("executing finally clause")

2. 捕获异常

捕获多个异常

try:
    x = int("abc")
except (ValueError, TypeError):
    print("类型或值错误")

获取异常信息

try:
    x = int("abc")
except ValueError as e:
    print(f"错误: {e}")

重新抛出异常

try:
    raise NameError("HiThere")
except NameError:
    print('An exception flew by!')
    raise  # 重新抛出

3. 抛出异常

raise ValueError("Invalid value")
raise TypeError("Expected int, got str")

4. 自定义异常

class MyError(Exception):
    pass

raise MyError("Something wrong")

5. 常见异常类型

异常 说明
ZeroDivisionError 除以零
TypeError 类型错误
ValueError 值错误
FileNotFoundError 文件不存在
KeyError 字典键不存在
IndexError 索引超出范围

异常处理让程序更健壮,必需掌握。