2011-11-24 47 views
1

當我編寫一個新的異常類型時,我應該只寫出所需的構造函數,還是實現存在於Throwable中的所有構造函數(並調用它們的super())?創建一個新的異常類型 - 寫入所有的構造函數還是隻寫需要的?

想一想,我會說只實施需要的東西(YAGNI - 你不會需要它)。如果我以後需要另一個構造函數,我只需添加它。

例子:

public void MyException extends RuntimeException { 
    // I only need this constructor 
    public MyException(Throwable cause) { 
     super(cause); 
    } 
} 

回答

3

只實現你需要什麼,並添加你需要他們。我通常添加一個包含String消息和你擁有的消息(用於包裝另一個Exception)。

1

是的,你應該實施你所需要的。

我工作/工作的系統至少通常實現至少一個接收異常原因的構造函數(與您的示例完全一樣)。另外一個只定義了默認構造函數的異常不會有什麼意義,除非它是非常非常特定的東西。

此致敬禮。

2

這取決於你在寫什麼。

對於一個小程序,不要寫死代碼。

如果班級正在進入圖書館,或者會被其他團隊/團隊成員用來進行某種類型的代碼所有權,那麼請編寫完整的班級。請注意這一點:「投機泛化」是軟件開發中的一個嚴重問題。

相關問題