2024-10-06 07:33:38 发布
网友
我在Python项目中有自定义的继承异常,我想弃用其中一个。正确的做法是什么
我有例外情况:
class SDKException(Exception): pass class ChildException(SDKException): pass class ChildChildException(ChildException): # this one is to be deprecated pass
我想反对ChildException,因为该异常在项目中被使用、引发并与其他异常链接
您可以使用一个decorator,它在异常类的每个实例化上显示一个warningDeprecationWarning类别:
DeprecationWarning
import warnings warnings.filterwarnings("default", category=DeprecationWarning) def deprecated(cls): original_init = cls.__init__ def __init__(self, *args, **kwargs): warnings.warn(f"{cls.__name__} is deprecated", DeprecationWarning, stacklevel=2) original_init(self, *args, **kwargs) cls.__init__ = __init__ return cls class SDKException(Exception): pass class ChildException(SDKException): pass @deprecated class ChildChildException(ChildException): # this one is to be deprecated pass try: raise ChildChildException() except ChildChildException: pass
app.py:7: DeprecationWarning: ChildChildException is deprecated
更新: 此外,还可以创建自定义警告类并将其传递给warn函数:
class ExceptionDeprecationWarning(Warning): pass warnings.warn(f"{cls.__name__} is deprecated", ExceptionDeprecationWarning)
您可以使用一个decorator,它在异常类的每个实例化上显示一个warning
DeprecationWarning
类别:更新: 此外,还可以创建自定义警告类并将其传递给warn函数:
相关问题 更多 >
编程相关推荐