在 Python 中,raise
语句用于显式地抛出一个异常。你可以使用它来触发一个内置的异常类型,或者抛出一个你自定义的异常。以下是一些常见的用法示例:
1. 抛出内置异常
Python 提供了一系列内置的异常类型,如 ValueError
, TypeError
, ZeroDivisionError
等。你可以使用 raise
语句来抛出这些异常
# 抛出一个 ValueError 异常
def divide(a, b):
if b == 0:
raise ValueError("除数不能为零")
return a / b
try:
result = divide(10, 0)
except ValueError as e:
print(f"捕获到异常: {e}")
2. 抛出自定义异常
你也可以通过继承内置的 Exception
类来创建自定义的异常类,然后使用 raise
语句抛出这个自定义异常。
# 定义一个自定义异常类
class MyCustomError(Exception):
def __init__(self, message, error_code):
super().__init__(message)
self.error_code = error_code
# 抛出一个自定义异常
def check_age(age):
if age < 0:
raise MyCustomError("年龄不能为负数", 400)
elif age < 18:
print("未成年")
else:
print("成年")
try:
check_age(-5)
except MyCustomError as e:
print(f"捕获到自定义异常: {e}, 错误代码: {e.error_code}")
3. 重新引发异常
有时你可能需要在捕获异常后做一些处理,然后重新引发该异常。你可以使用 raise
语句不带任何参数来实现这一点。
try:
# 可能会引发异常的代码
result = 10 / 0
except ZeroDivisionError as e:
print("检测到除零错误,进行一些处理...")
# 重新引发异常
raise
4. 使用 from
关键字
当你需要重新引发一个捕获的异常时,但希望保留原始异常的上下文信息,可以使用 from
关键字。
try:
# 可能会引发异常的代码
result = 10 / 0
except ZeroDivisionError as e:
# 添加一些额外的处理
print("检测到除零错误,进行一些处理...")
# 重新引发异常,并保留原始异常的上下文
raise ValueError("这是一个重新引发的异常") from e
总结
raise
语句在 Python 异常处理中非常有用,它允许你显式地抛出异常,无论是内置的还是自定义的。通过合理地使用 raise
语句,你可以更好地控制程序的错误处理流程。