如何解决如何正确弃用Python中的自定义异常?
我的Python项目中有自定义继承异常,我想弃用其中之一。正确的做法是什么?
我的例外情况:
class SDKException(Exception):
pass
class ChildException(SDKException):
pass
class ChildChildException(ChildException): # this one is to be deprecated
pass
考虑到项目中其他异常已被使用,引发和链接,我想弃用ChildChildException。
解决方法
您可以使用装饰器,该装饰器在每个异常类的实例上显示一个warning 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,**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
更新: 另外,您可以创建自定义警告类并将其传递给警告功能:
class ExceptionDeprecationWarning(Warning):
pass
warnings.warn(f"{cls.__name__} is deprecated",ExceptionDeprecationWarning)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。