这是我使用raise的异常类:
class SCE(Exception):
"""
An error while performing SCE functions.
"""
def __init__(self, value=None):
"""
Message: A string message or an iterable of strings.
"""
if value is None:
self._values = []
elif isinstance(value, str):
self._values = [value]
else:
self._values = list(value)
def __raise__(self):
print('raising')
if not len(self._values):
return
def __str__(self):
return self.__repr__()
def __iter__(self):
return iter(self._values)
def __repr__(self):
return repr(self._values)
目前,如果我提出这个没有值的异常,我会得到回溯,然后是:
__main__.SCE: []
而不是我期望的是:
raising
>>>
你怎么超载加注?
解决方法:
正如另一个答案所说,没有__raise__特殊方法. 2004年有一个关于comp.lang.python的帖子,其中有人建议添加这样的方法,但我认为没有任何跟进.我可以想到挂钩异常提升的唯一方法是通过修补解释器,或者在raise操作旁边插入函数调用的某种源或字节码重写.