2017-03-13 15 views
0

この質問は長い間、たくさん混乱させています。私は同様の質問があったことに気づきましたが、私には完璧な答えはありません。 私は何混乱:インタフェース定義時に例外を宣言するか、宣言するべきではありませんか?

  1. は、私はおそらく同じインタフェースのための複数の実装がありますが、実際には、インターフェイス定義中に例外を宣言した場合、別の人は、おそらく別の例外をスローします。私は、私たちがそのようにしっかりとしたインターフェイスを制限してはならないと思う
  2. 一方、例外を宣言しなければ、インタフェースプログラミング中におそらく例外がどのような例外を投げるかを知ることは容易ではありません。このようにして、インタフェースユーザはインタフェース実装の詳細を知る必要がありました。

バランスポイントとは何ですか?どのように私は続くべきですか?あるいは、私のインターフェイスプログラミングに関する理解が間違っているかもしれません。

ありがとうございます。

+0

@Steveは、はい、私が今までそのページを読んで、私は明確なイエスを取得したりしないでください。 – feng

+0

@feng事は、この種のものは明確な答えがありません。明確なイエスの答えはありません。 – Sweeper

+0

@Sweeper、oh、ちょうど賛成?あなたの癖は何ですか? – feng

答えて

0

私は、インターフェイスを実装しているユーザーを厳密な例外にバインドすべきではないと思います。彼/彼女はおそらく、独自の例外タイプを実装する必要があるか、他の例外をスローする必要があります。これは、インターフェイスの抽象度に基づいています。 IListについて考えてみると、Add(object item);に例外がスローされますか?これはちょうど私の意見です。あなたは今までどのように使用するか明確な答えを得ることはありません

public class FileList : IList 
{ 
    public void Add(object item) 
    { 
     try 
     { 
     } 
     //Here I could need this Exception which you can't know on interface-Level 
     catch(FileNotFoundException ex) 
     { 
     } 
    } 
} 

:あなたがインターフェイスを作成する場合のは、私は以下のように、新しいクラスを作りたいとしましょうので、あなたは、このことを知ることができませんこの。あなたが本当に必要か、インターフェイスレベルでの例外をマークしたい場合は、私はあなたにXML-コメントをお勧めします:

/// <summary> 
/// Adds an object to your List 
/// </summary> 
/// <param name="item">The Item to Add</param> 
/// <exception cref="FileNotFoundException"></exception> 
/// <exception cref="ArgumentNullException"></exception> 
+0

あなたの答えに非常に感謝します。コード習慣は何ですか?制限しない? – feng

+0

私の習慣はこれを制限しないことです:) – Sebi

関連する問題