![](/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.