2011-03-14 48 views
1

如果有大量不同的異常(如果它們都是從某個特定於包的特例中派生出來的),是否存在潛在的問題?例如,我有FooException。從那裏,我然後有OutOfRangeOfSomethingException,RanOutOfBufferException,OverflowMapBoundaryException所有從該包的具體基地FooException。我知道有這個基地允許用戶和我自己有太多專門的例外;這是一個問題嗎?

try: 
    #stuff 
except FooException: 
    #Catch all my exceptions, but let default Python ones still raise 

但是有沒有其他問題呢?我是否應該嘗試一些更廣泛的例外情況或許多特定情況?

N.B.具體而言,我說的是能夠在多個地方使用。我不打算有IntWasSlightlyTooLargeForInitializationOfMemoryObjectException

回答

4

您擁有的異常類型越多,需要維護的異常類型越多。這是一個很重要的問題,你需要的控制措施與你的例外情況相比是多麼的微不足道,而你想要繼續保持這種優質水平。擁有更豐富的異常層次結構並沒有真正的性能損失,問題是這樣做是否真的有用。

+0

我認爲它使測試更容易,更穩定。 例如,檢查您的代碼生成的許多「ValueError」之一需要您的測試和用戶代碼來檢查這些錯誤的字符串。像任何好的代碼片段一樣,具有適當命名的異常比不必處理20次測試失敗要好得多,因爲庫開發人員改變了ValueError異常中的文本。 2美分。使用更多特定的例外。 – yesudeep 2011-07-02 17:38:18