2009-05-06 9 views
200

特に、このような状況で標準のサブクラスであるExceptionが使用されていますか?要求された操作はサポートされていないことを示すためにスローされサポートされていない/実装されていない操作に対してJavaでスローする標準の例外は何ですか?

+0

クラスがメソッドを実装していないときに使用するのが適切ですが、子クラスはそうすることができますか?言い換えれば、非抽象クラスに抽象メソッドを持たせることです。 – osa

+0

@SergeyOrshanskiyオブジェクトをどのように構築するかによって、メンバ変数をインスタンス化するためにインターフェイスを実装する匿名クラスを作成する必要がありますが、使用したくない場合に便利です。あなたが 'null'に設定し、それを誤って(あるいは他の誰かが)使用した場合、この場合は' UnsupportedOperationExceptions'よりも明白でない 'NullPointerExceptions'が得られます。ほんの一例。 – 2rs2ts

答えて

291
+0

このばかげた "これはコレクションフレームワークの一部です"ということを無視しています。これは 'java.lang.'パッケージに含まれています.JavaDocは明示的にこれが何であるかを明記しています。 –

+3

@JarrodRobersonそうした場合、その文は実際にはクラスのドキュメントから削除する必要があります。例外は他のパッケージで使用されているようです。私はオラクルがそうしていると思います。私はバグレポートを提出します。 –

8

あなたがより細かく、より良いdecriptionをしたい場合は、commons-lang

警告からNotImplementedExceptionを使用することができます。バージョン2.6以前とバージョンのみ3.2、後に使用可能。

164

という名前の2例を区別:

  • 要求された操作はサポートされていないことを示すために、最も可能性の高い、UnsupportedOperationExceptionをスローしませんでした。

    1. コモンズ-lang2で利用できたし、中コモンズ-lang3に再度追加されましたapache commons-langからNotImplementedExceptionを使用します。この間を選択、要求された操作はまだ実装されていない示すために

    2. バージョン3.2。

    3. NotImplementedExceptionを実装してください。

    4. UnsupportedOperationExceptionに「未実装、まだ」というメッセージが表示されます。

+0

これは私には合理的だと思われるので、これと一緒に行くつもりです。例外によって示された "まだ"または "決して"これにどのように反応するかについてのアイデアが与えられます。 – sschrass

+1

#1または2が実際には非常に好ましい。#3は、 "サポートされていない"と "実装されていない"という意味の違いを捕捉しますが、別のクラスを使用すると、クイック検索を簡単に実行できます。 –

4

あなたは​​に新しい(まだ実装されていません)関数を作成する場合、それは次のステートメントをメソッド本体を生成します。

throw new java.lang.UnsupportedOperationException("Not supported yet."); 

したがって、私はUnsupportedOperationExceptionを使用することをお勧めします。

関連する問題