1

私は次のパブリックインターフェイスを持っています

public interface Bar{
   public void DoStuff();
}

内部バックエンドクラスを使用

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

質問:

  • インターフェイスのみBarImplを実装しBarます。
  • BarImplDoStuffメソッドで例外をスローできます。

これらの例外をBar.DoStuffxmlドキュメントに文書化することは意味がありますか?

前もって感謝します、

4

3 に答える 3

3

BarImplはい-これは、実装者が唯一ではない場合でも当てはまります。

私が使用したい例はStreamクラスで、抽象ReadStreamメソッドは、このメソッドを使用するときにインスタンスのユーザーがスローされると予想される例外の全負荷をリストします。次に、このクラスの実装者はさまざまなシナリオでスローする必要があります。

于 2012-02-17T13:26:25.687 に答える
1

はい、そうです。これは、他の開発者が準備し、発生する可能性のある例外を処理するのに役立ちます。MSDNのドキュメントを参照して、例外に備えるのに何回役立ったかを考えてください。

于 2012-02-17T13:09:39.170 に答える
1

処理できる例外のみを文書化します。他の例外を文書化することは意味がありません。私の「処理」例外の定義は、メソッドが例外をキャッチすることで約束された結果を提供できるということです。

したがって、この回答はこれらの例外のみを対象としています。

オープン/クローズドの原則に従いたい場合は、具象クラスではなく、インターフェースの例外を文書化する必要があります。また、同じシナリオが発生した場合、すべての実装で同じ例外をスローする必要があります。

于 2012-02-17T13:11:51.557 に答える