簡體   English   中英

我應該為只能調用一次的函數引發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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM