根据给定的协议(protocol)(我无法更改,只能实现),某些函数 initialize_foo()
应该只调用一次:
def initialize_foo():
"""
...
Note:
You must call this function exactly once.
"""
我想识别被调用两次的协议(protocol)滥用,并引发异常:
_foo_initialized = False
def initialize_foo():
"""
...
Note:
You must call this function exactly once.
"""
if _foo_initialized:
raise <what>?
...
_foo_initialized = True
问题是要引发哪个类的对象。看着 standard exceptions ,除了 Exception
之外,我找不到任何子类,这似乎太笼统了。
这种情况下的一般做法是什么?
最佳答案
我会使用 RuntimeError
。
它经常用于这类东西,即使在标准库中也是如此。您可以在 warnings
module 中找到与您的用例非常相似的示例:
if self._entered:
raise RuntimeError("Cannot enter %r twice" % self)
另一个例子在threading
:
if self._started.is_set():
raise RuntimeError("threads can only be started once")
如果应该捕获该错误并且您认为 RuntimeError
可能是模棱两可。
关于python - 哪个标准异常类用于违反协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599453/