2012-02-21 14 views
17

Javaで未チェックの例外を独自に作成することはできますか?私は自分のthrowsの洪水で、この例外をスローするメソッドを呼び出すすべてのメソッドを更新せないJavaで独自のチェックされていない例外を作成することはできますか?

基本的に、私は私自身の例外クラスを持っている

  • したいのですが、MyUncheckedException
+0

既存のコードに新しい例外を追加すると、基本的に以前のバージョンのAPIとの互換性が失われることに注意してください。もちろん、RuntimeExceptionsだけを追加してもバイナリ互換ですが、個人的にはさらに悪いと思っています。未知の人々は新しいバージョンにリンクし、突然奇妙なエラーになります。 – Voo

答えて

29

はい。 MyUncheckedExceptionRuntimeExceptionから拡張します。ただし、以下のあなたの方法を投げることができる例外を指定するに煩わさ をしたくないという理由だけでのRuntimeExceptionを投げるかのRuntimeExceptionの サブクラスを作成していない、話す一般documentation

からガイドラインです。

ここに、最終行のガイドラインがあります。クライアントが例外から復旧することが合理的に となる場合は、チェック例外にしてください。 クライアントが例外から回復するために何もできない場合は、 未確認の例外にします。

2

あなたはRuntimeExceptionをサブクラス化したいと思っていますか?

4

はい - あなたは右の理由のためにそれを行うことを確認してくださいRuntimeException

からそれを引き出す:原則として、実行時例外ではなく、エラーよりもプログラミングエラーは、プログラムが潜在的にいくつかの意味の中に反応する可能性があることを示します方法。

0

はい。効果的なJavaのによると -

Java言語仕様がそれを必要としませんが、エラーがリソース不足、不変の障害、またはそれを作る他の条件を示すために、JVMで使用するために予約されている強力な 慣習があります実行を続行することは不可能です。この慣習をほぼ普遍的に受け入れるなら、新しいErrorサブクラスを実装しないのが最善です。したがって、実装しているチェックされていないスローブラブルは、(直接的または間接的に)RuntimeExceptionをサブクラス化する必要があります。チェックされない例外の使用以下

推奨されます: - プログラミングエラーを示すために

  1. 使用実行時例外。
  2. 条件が回復を可能にする可能性が高いと思われる場合は、チェック例外を使用してください。それ以外の場合は、実行時例外を使用します。リカバリが可能かどうかが不明な場合は、チェックされていない例外を使用するほうがよいでしょう。チェックされない例外を文書について

-

方法を投げることができることをそれぞれチェックされない例外を文書化するJavadocの@throwsタグを使用しますが、この方法では未チェック 例外を含むように投げるキーワードを使用していません宣言。

関連する問題