python怎么抛出异常_python抛出异常教程

python怎么抛出异常_python抛出异常教程
最新回答
玩命丕玩心

2026-08-04 00:39:32

在Python中,抛出异常通常使用raise语句,它允许你主动触发一个异常。你可以抛出内置的异常类型,也可以自定义异常类型。以下是详细教程:

1. 抛出内置异常

Python提供了多种内置异常类型,如ValueError、TypeError、IndexError等。你可以直接使用raise语句抛出这些异常。

def divide(a, b): if b == 0: raise ValueError("除数不能为零") return a / btry: result = divide(10, 0)except ValueError as e: print(f"捕获到异常: {e}")2. 自定义异常

你可以通过继承Exception类或其子类来创建自定义异常。

class MyCustomError(Exception): passdef check_value(value): if value < 0: raise MyCustomError("值不能为负数") return valuetry: result = check_value(-1)except MyCustomError as e: print(f"捕获到自定义异常: {e}")3. 重新抛出异常

在except块中,你可以使用raise不带参数来重新抛出当前捕获的异常。

try: x = int("invalid")except ValueError as e: print(f"捕获到异常: {e}") raise # 重新抛出异常4. 抛出异常并附带信息

你可以在抛出异常时附带详细信息,帮助调试。

def process_data(data): if not isinstance(data, list): raise TypeError("数据必须是列表类型") if len(data) == 0: raise ValueError("数据列表不能为空") # 处理数据 return sum(data)try: result = process_data([])except (TypeError, ValueError) as e: print(f"处理数据时出错: {e}")5. 使用finally确保清理

无论是否抛出异常,finally块中的代码都会执行,常用于资源清理。

file = Nonetry: file = open("example.txt", "r") data = file.read() # 处理数据except FileNotFoundError: print("文件未找到")finally: if file: file.close()6. 异常链

你可以使用raise ... from ...将一个异常链接到另一个异常,保留原始异常上下文。

try: x = int("invalid")except ValueError as e: raise RuntimeError("解析整数失败") from e总结
  • 使用raise抛出内置或自定义异常。
  • 通过try/except捕获和处理异常。
  • 使用finally确保资源清理。
  • 重新抛出异常或链接异常以保留上下文。

这些技巧可以帮助你编写更健壮的Python代码,有效处理错误情况。