サポートされていない/実装されていない操作に対してJavaでスローする標準の例外は何ですか?


308

特に、Exceptionこれらの状況で使用される標準サブクラスはありますか?


クラスがメソッドを実装していないが、子クラスが実装している場合に使用するのは適切ですか?つまり、非抽象クラスに抽象メソッドを含めることです。
osa

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

回答:


438

java.lang.UnsupportedOperationException

要求された操作がサポートされていないことを示すためにスローされます。


4
@JarrodRoberson OK、その場合、そのステートメントはクラスのドキュメントから実際に削除する必要があります。例外は他のパッケージで使用されているようです。Oracleがそうするなら、私たちはそうするべきだと思います。バグレポートを提出します。
Maarten Bodewes 2016年

1
これはチェックされていない ことに注意してくださいRuntimeException。コンパイル時にこれらの例外を処理する際のフィードバックや支援はありません。これがスタブメソッドまたは進行中の作業に使用される場合は、ある種のチェック済み例外を使用する必要があります
TastyWheat、

221

名前を付けた2つのケースを区別します。

  • 要求された操作がサポートされておらず、サポートされる可能性がほとんどないことを示すには、をスローしUnsupportedOperationExceptionます。

  • 要求された操作がまだ実装されていないことを示すには、次のいずれかを選択します。

    1. commons-lang2で利用可能で、バージョン3.2のcommons-lang3に再度追加されたNotImplementedExceptionfrom Apacheのcommons-langを使用します。

    2. 独自に実装しますNotImplementedException

    3. UnsupportedOperationException「まだ実装されていません」などのメッセージをスローします。


1
それは私には理にかなっているように思われるので、私はこれを使います。例外によって示される「まだ」または「決して」は、これにどのように反応するかについての考えを与えます。
sschrass 2016

3
#s 1または2が実際には非常に望ましいです。#3は「サポートされていない」と「実装されていない」のセマンティクスの違いをキャプチャしますが、別のクラスを使用すると、クイック検索を実行して、コミットする前に必要なものを実装することを忘れていないことを確認しやすくなります。
Sean U

4
#3は、commons-langであっても、サードパーティのライブラリや追加の作業を必要としないため、実装されていないメソッドに最適です。
JoshDM 2018


14

より詳細で詳細な説明が必要な場合は、commons-langの NotImplementedExceptionを使用できます

警告:バージョン2.6以前とバージョン3.2以降でのみ使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.