021. 定义一个自定义异常,并在特定条件下抛出
在 Python 中,可以通过继承内置的 Exception
类来定义自定义异常。自定义异常可以让你更精确地描述程序中的错误情况,并在特定条件下抛出这些异常。以下是如何定义一个自定义异常并在特定条件下抛出它的示例代码。
步骤 1:定义自定义异常
自定义异常类通常继承自 Exception
类,并可以包含额外的初始化参数和方法。
# 定义一个自定义异常类
class MyCustomError(Exception):
def __init__(self, message="这是一个自定义异常"):
# 调用父类的初始化方法
super().__init__(message)
步骤 2:在特定条件下抛出自定义异常
在代码中,可以通过 raise
语句抛出自定义异常。以下是一个示例,展示如何在特定条件下抛出自定义异常。
# 定义一个函数,检查输入的值是否为正数
def check_positive(value):
if value <= 0:
# 如果值不是正数,抛出自定义异常
raise MyCustomError(f"输入的值 {value} 不是正数!")
else:
print(f"输入的值 {value} 是正数。")
# 测试代码
try:
# 测试一个正数
check_positive(10)
# 测试一个非正数
check_positive(-5)
except MyCustomError as e:
# 捕获并处理自定义异常
print("捕获到自定义异常:", e)
运行结果
运行上述代码后,输出如下:
输入的值 10 是正数。
捕获到自定义异常: 输入的值 -5 不是正数!
代码解释
定义自定义异常类:
-
使用
class MyCustomError(Exception)
定义一个名为MyCustomError
的自定义异常类。 -
在
__init__
方法中,调用父类的__init__
方法,并传递一个默认的错误消息。
定义检查函数:
-
定义一个函数
check_positive
,接受一个参数value
。 -
如果
value
不是正数(即value <= 0
),使用raise
语句抛出自定义异常MyCustomError
,并传递一个具体的错误消息。
测试代码:
-
使用
try
块调用check_positive
函数,分别测试一个正数和一个非正数。 -
使用
except
块捕获并处理抛出的MyCustomError
异常。
扩展:自定义异常的更多功能
自定义异常类可以包含更多的功能,例如:
-
添加额外的属性来存储错误的详细信息。
-
定义额外的方法来处理错误。
# 定义一个更复杂的自定义异常类
class MyCustomError(Exception):
def __init__(self, value, message="这是一个自定义异常"):
self.value = value # 保存触发异常的值
self.message = message # 保存错误消息
super().__init__(f"{message}: {value}")
def __str__(self):
return f"错误值:{self.value},错误消息:{self.message}"
然后在代码中使用这个更复杂的自定义异常:
# 定义一个函数,检查输入的值是否为正数
def check_positive(value):
if value <= 0:
# 如果值不是正数,抛出自定义异常
raise MyCustomError(value, f"输入的值 {value} 不是正数!")
else:
print(f"输入的值 {value} 是正数。")
# 测试代码
try:
check_positive(-5)
except MyCustomError as e:
print("捕获到自定义异常:", e)
运行结果
运行上述代码后,输出如下:
捕获到自定义异常: 错误值:-5,错误消息:输入的值 -5 不是正数!
总结
通过定义自定义异常类并使用 raise
语句抛出异常,可以在特定条件下处理程序中的错误情况。自定义异常类可以包含额外的属性和方法,以提供更丰富的错误信息和处理逻辑。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)