gpt4 book ai didi

Python:我可以用 def __raise__(self): 重载 raise 语句吗?

转载 作者:太空狗 更新时间:2023-10-30 03:07:58 24 4
gpt4 key购买 nike

这是我使用 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

最佳答案

正如其他答案所说,没有 __raise__ 特殊方法。 2004 年在 comp.lang.python 上有一个线程有人建议添加这样的方法,但我认为没有任何后续行动。我能想到的 Hook 异常引发的唯一方法是通过修补解释器,或者某种源代码或字节码重写,在引发操作旁边插入一个函数调用。

关于Python:我可以用 def __raise__(self): 重载 raise 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2180810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com