2016-07-27 19 views
0

我有一個數據庫連接對象,我想限制/強制最大數量的調用它的寫操作(函數)。我在測試中嘲笑了它,並且重寫了監聽對它的調用的寫入方法。哪個異常類最適合標記對函數的過量調用次數?

但是,當它被稱爲超過允許的最大數量(比如說2)時,我對於引發什麼樣的錯誤感到困惑。我已經通過docs,但沒有找到任何合適的。 (因此,正如它所暗示的那樣)我已經使用了RuntimeError,但我並不完全相信它給出的信息(不是我顯示的顯式信息,而是類本身表達的隱含意義)。我覺得AttributeError是非常合適的,但沒有其他的東西接近正確。

有沒有其他的內建異常類更適合這個?

+0

我會創建一個自定義異常......我不太清楚爲什麼你想要一個內建的。 – SuperSaiyan

+0

@SuperSaiyan是的,那是我最後的手段,也是一個很常見的手段。我應該在問題中加入這一行,錯過了:)。 – 0xc0de

+0

@ 0xc0de:你爲什麼要計算呼叫次數?你想在生產中運行這個代碼嗎?因爲你正在限制一個方法的調用次數,這個方法總是會在** MAX **調用次數後拋出異常。它將永遠不會打開此方法,直到您再次重新啓動環境。 –

回答

0

如果提供的參數太多的功能,你得到的東西是這樣的:

TypeError: function-name takes exactly n arguments (m given) 

所以,你可以做鏡像的Python一樣。當您撥打raise以確保您的異常字符串與Python引發的異常字符串相區別時,您應該小心,否則可能會掩蓋真正的TypeError

對此的看法是分歧的。有人說,自定義的Exception類不是必需的。就我個人而言,如果可能存在混淆,我認爲他們有一個地方。創建自己的異常是很容易的,你需要的是:

class MyException(TypeError): 
    pass 

現在你知道,任何事件都來自你的代碼,而不是從Python的。請記住,如果你把它放在一個模塊或一個類中以命名空間作爲前綴,例如MyClass.MyException