Python:我可以使用def __raise __(self)重载raise语句:?

这是我使用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操作旁边插入函数调用的某种源或字节码重写.

上一篇:pandas where


下一篇:存储过程中的when others then 和 raise 代表什么?