在Python中,抛出异常主要有以下三种方式,结合了不同场景下的使用方法:
一、使用异常类引发异常
通过raise 异常类
语法直接抛出异常,适用于预期的错误情况。
示例:
def divide(a, b):
if b == 0:
raise ZeroDivisionError("除数不能为零")
return a / b
try:
result = divide(10, 0)
except ZeroDivisionError as e:
print(e) # 输出: 除数不能为零
二、使用异常类对象引发异常
显式创建异常类实例后抛出,可传递错误信息。
示例:
class CustomError(Exception):
pass
def validate_age(age):
if age < 0:
raise CustomError(f"年龄不能为负数: {age}")
return age
try:
age = -5
validate_age(age)
except CustomError as e:
print(e) # 输出: 年龄不能为负数: -5
三、重新引发异常
使用raise
语句重新抛出已捕获的异常,适用于异常处理链的延续。
示例:
def process_data(data):
if not isinstance(data, list):
raise TypeError("数据必须是列表类型")
return sum(data)
try:
result = process_data("not a list")
except TypeError as e:
print(e) # 输出: 数据必须是列表类型
raise # 重新引发异常
补充说明
-
异常类型选择
Python内置了丰富的异常类型(如
ValueError
、IndexError
等),也可自定义异常类(如上述CustomError
)。 -
异常处理机制
通过
try-except
块捕获异常,避免程序崩溃,并可进行针对性处理。 -
异常链
可使用
raise from
语法将当前异常包装为另一个异常,保留原始异常信息。
以上三种方式覆盖了主动抛出异常的常见场景,根据具体需求选择合适的方式即可。