0

IllegalArgumentExceptionのようなカスタム例外があり、メソッドが有効なオブジェクト値の代わりにnull参照を取得できる場合は、niceログ情報を持つようにIllegalArgumentExceptionのようなカスタム例外が発生する

public void method(String str){ 
     if(str == null)throw new CustomIllegalArgumentException("str cannot be null"); 
    } 

私は、このような不正な引数の例外と他のRuntimeExceptionsの違いをいつも見ることができると思います。

良いアイデアですか?

P.S:私はUPDATE ** Avoiding != null statements

のような記事を見て:**だから私はそれがプログラマ意図例外であり、私は明確なログを持っていることを知っているだろう。

+0

例外タイプに基づいていくつかのアクションを実行しようとしていますか?私は異なる無効な入力のための異なる例外タイプを意味するのですか? – yadab

答えて

4

IllegalArgumentExceptionはカスタム例外ではありません。引数がnullのときは、NullPointerExceptionを投げるのが普通です。

特殊なケースに適している場合は、一般的に標準例外を優先する必要があります。 「Effective Java 2nd Edition」(「標準例外の使用を優先」)の項目60も参照してください。これの利点の1つは、独自のコードと使用するライブラリの両方で発生する可能性のある同様の条件に対して単一のハンドラを記述できることです。

例外を区別するために、それらが保持する文字列メッセージを使用する必要があります。また、スタックトレースは、独自のコードまたは他のコードから例外がスローされたかどうかを示します。余分な例外クラスの必要はありません。

独自の例外クラスを作成することが妥当な場合は、それが示す例外条件に関する追加情報を保持する例外が必要な場合です。この場合も、適切な標準クラスから例外を派生させる必要があります。そのため、使用する独自のコードとライブラリの両方から発生する同様の条件に対する例外を処理するハンドラを記述できます。

Preconditons googleのユーティリティクラスも参照してください。特にcheckNotNull()ユーティリティメソッドは、引数がnullの場合にNullPointerExceptionをスローします。

+0

CustomIllegalArgumentExceptionは、私のメソッドでスローされるNUllPointerExceptionとIllegalArgumentExceptionを組み合わせて、クリアなログを持つことです。 – drifter

+1

一般的に、私は自分自身の例外_type_を書き留めようとするよりも、より詳細なエラー_messages_を持つことを好みます。 –

関連する問題