提问人:soapcmd 提问时间:8/30/2023 更新时间:8/30/2023 访问量:17
使用类装饰器捕获所有类方法的异常不适用于 init 方法
Capture exception for all class methods with class decorator don't work for init method
问:
我想捕获所有方法(并给它们一个新的异常类型)
我创建了一个类装饰器来实现这一点,但异常处理不包括Myclass
__init__
我该如何解决这个问题?还是其他实现此功能的方法? 谢谢!
class CustomError(Exception):
pass
def add_exception_handling(cls):
class DecoratedClass(cls):
def __getattribute__(self, name):
attr = super().__getattribute__(name)
if callable(attr):
def wrapper(*args, **kwargs):
try:
return attr(*args, **kwargs)
except Exception as e:
raise CustomError(e)
return wrapper
else:
return attr
return DecoratedClass
@add_exception_handling
class MyClass:
def __init__(self):
1 / 0
def method1(self):
1 + '1'
def method2(self):
a
我所期望的是: 执行时
myclass = MyClass()
目标结果是: CustomError:除以零
实际上我得到了: ZeroDivisionError:除以零
答: 暂无答案
上一个:类型提示:解决循环依赖
下一个:init 后自动调用类函数
评论