如何使用装饰器来处理异常?

如何使用装饰器来处理异常?

装饰器示例:

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
  • 装饰器可以返回任何值,包括继续执行代码或执行不同的异常处理逻辑。
相似内容
更多>