如何使用装饰器来处理异常?
装饰器示例:
def handle_exception(func):
def wrapper(*args, **kwargs):
try:
result = func(*args, **kwargs)
return result
except Exception as e:
return handle_exception(func)(args, kwargs)
return wrapper
使用装饰器处理异常:
@handle_exception
def my_function():
# 代码执行...
# 如果发生异常,装饰器会处理它
使用装饰器处理多种异常类型:
def handle_exceptions(exceptions):
def decorator(func):
def wrapper(*args, **kwargs):
for exception in exceptions:
try:
result = func(*args, **kwargs)
return result
except exception:
return handle_exception(exception)(args, kwargs)
return func(*args, **kwargs)
return wrapper
return decorator
使用装饰器处理不同异常类型:
@handle_exceptions([Exception('异常1'), Exception('异常2')])
def my_function():
# 代码执行...
注意:
- 装饰器只会处理在装饰函数中定义的异常类型。
- 如果要处理所有异常,请使用
except Exception as e
。 - 装饰器可以返回任何值,包括继续执行代码或执行不同的异常处理逻辑。