この方法を取る
/**
* @return List of group IDs the person belongs to
*
*/
public List<String> getGroups() {
if (this.getId().equals("")) return null;
}
Nullを返す代わりに例外をスローしたいのですが、重要なパラメータ/依存関係が設定されていないときにスローする例外は何ですか?
パラメーター/引数が外部から制御されている場合、 IllegalArgumentException
、または IllegalStateException
メソッドが間違った瞬間(状態)に呼び出された場合。あなたの特定のケースでは、後者だと思います。 (疑わしい)選択肢は NullPointerException
です。
ただし、ユーザーが理由を理解できるように、これは@throws
に明示的に文書化する必要があります。
IDが常に設定されていることを保証できない場合(たとえば、有効なIDが渡されたことを確認できる場所でコンストラクターに要求することにより)、スローする他の提案 IllegalStateException は正しい。ただし、可能な場合は、オブジェクトが最初にこの状態にならないようにしてください。
Idは所有者の状態であるため、IllegalStateExceptionを使用します。 idがパラメーターとして渡された場合、IllegalArgumentExceptionが正しいでしょう。
例外をスローする代わりに、空のリストを返すだけです。依存関係/パラメーターが満たされない場合、結果はありません。投稿されたコメントとコードから、それが予想される動作のように見えます。 idが空の場合、グループがアタッチされていないため、空のリストになります。
例外を拡張して、独自の例外タイプを作成します。このようにして、関数を呼び出すと、その特定の例外をキャッチし、必要に応じて適切に処理できます。例外を拡張するものなら何でも同じことができますが、例外処理で非常に堅牢になるように、独自の例外クラスを作成することを好みます。もちろん、これはあなた次第です。