2012-04-01 10 views
2

私は、単一値と複数値の両方のデータを扱うJavaクラスを持っています。したがって、2つの方法、すなわちgetValue()getValues()を公開します。しかし、私はgetValueメソッドが複数の値のデータに対して呼び出されたときに何らかの例外をスローしたいと思います。最も関連性の高い例外クラスは何ですか?私はリフレクションやそのような発見技術を使用していないので、IllegalAccessExceptionは適切ではないと感じています。どちらも引数を渡していないので、IllegalArgumentExceptionは適切ではありません。最も一般的で汎用性の高い未チェックの実行時例外 -不正なメソッド

class getValException extends Exception 
{ 
    public getValException(String message) 
    { 
     super(message); 
    } 
} 
+2

申し訳ありませんが、何か面白いです。あなたのプログラムの構造についてもっと教えてください。さらにコードを表示することさえできますか?たぶんあなたはただ一つのメソッドしか必要とせず、クラスに返す値の数を伝えるパラメータを取るようにしてください。あなたが上に投稿したことに基づいて私は知らない。あなたの質問に関しては、時には、これは独自のExceptionクラスを作成するのが最も簡単で最善の方法です。しかし、もう一度、まず実際にこれが必要かどうかを見てみましょう。 –

+0

コードは次のようになります。class {private Collection values; //単一の値を返すか、例外をスローします。public T getValue(); //コレクションにラップされた複数の値または単一の値を返します。public Collection getValues(); } – Neel

答えて

13

UnsupportedOperationException

+2

クール!ありがとう...これは完璧に聞こえる! – Neel

0

あなたはこのような何かを行うことができ、このlink

を見てみてください、このクラスのために特別に投げるために、独自の例外を作ることができますJavaで。

http://docs.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html

+2

私の独自の例外を作成することは、人々が新しいAPIを習得しなければならないため、絶対に必要でない限り、素晴らしいアイデアではないかもしれません。 – Neel

+2

Blochは、Effective Java 2ndでは、既存のものが既に存在する場合に新しい例外を作成すると、コーディングが正しく行われないことを示しています。 – vaxquis

6

java.lang.IllegalStateExceptionこのための最善の標準の例外です。

のJavaDocは言う:メソッドが違法または不適切なときに呼び出されました

シグナル。言い換えれば、Java環境またはJavaアプリケーションは、要求された操作に適切な状態ではありません。

あなたのケースでは、呼び出されたメソッドが不適切な時に呼び出されたことを意味します。

+1

私のオブジェクトは* illegal *状態ではないので、私の場合は少し不適切です。 – Neel

+0

@ Neeel:私の編集を確認してください。 –

+0

ええ、不適切な時間ではないかもしれませんよね?しかし、実際には私のオブジェクトは複数の値を取らなければならないので、値はgetValueによって返されるべきです - これは不確定です(0番目の値は期待できないかもしれません) – Neel

関連する問題