2012-02-17 111 views
1

我有以下的公共接口歸檔例外

public interface Bar{ 
    public void DoStuff(); 
} 

與內部後端類

internal class BarImpl : Bar{ 
    public void DoStuff(){ 
    // throw exception if invalid state 
    // do something 
    } 
} 

問題:

  • 只有BarImpl實現Bar接口。
  • BarImpl可能會在DoStuff方法中拋出異常。

Bar.DoStuff xml文檔中記錄這些例外是否有意義?

在此先感謝,

回答

3

是的 - 即使BarImpl不是唯一的實現者,情況也是如此。

我喜歡用的例子是Stream類在抽象Read方法列出了一個Stream實例的用戶使用此方法時可能想到被拋出的異常的整個負載,反過來這個類的實現者應該在各種情況下拋出。

+0

+1爲'Stream.Read'參考!很好的例子 – GETah 2012-02-17 13:38:04

1

是的。它有助於其他開發人員做好準備並處理可能發生的任何異常。想一想,通過閱讀MSDN文檔,它有多少次幫助您爲異常做好準備。

+0

感謝您的快速回復 – GETah 2012-02-17 13:37:17

1

我只記錄可以處理的異常。記錄其他例外情況是沒有意義的。我對「處理」異常的定義是,該方法可以通過捕獲異常來交付承諾的結果。

所以這個答案只對那些例外:

如果你想跟着開/常閉原則,你應該記錄該接口的例外,而不是具體類。所有實現必須在發生相同情況時拋出相同的異常。

+0

+1對於開放/關閉原則 – GETah 2012-02-17 13:37:35