![](/img/trans.png)
[英]Which exception should I raise on bad/illegal argument combinations in Python?
[英]What kind of the standard exception in python should I raise for a function which can only be invoked once
我正在为我的模块创建一个初始化函数,当用户不小心两次调用它时,我想引发一些异常。 我应该提出哪种标准例外。
Class A(object):
has_init = False
@classmethod
def initialize_class(cls):
if has_init:
raise Exception('xxx')
has_init = True
A.initialize_class()
A.initialize_class() # should raise exception
您可能会引发运行时错误,但是最好更改初始化程序,这样,如果两次调用它,就不会造成损坏。
在这种情况下,您应该引发自定义异常而不是内置异常。
SystemError是一个选项,但RuntimeError可能是最合适的
您可以引发AttributeError
,如下所示:
class A(object):
@classmethod
def initialize_class(cls):
del cls.initialize_class
A.initialize_class()
A.initialize_class()
(尽管我会在导入时亲自在模块内初始化类,而不是让客户端代码来完成。如果必须在导入后进行初始化,请考虑使第二个调用成为no-op,而不是引发异常。 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.