この質問は、設計とクリーンコードの詳細です。チェックされたexpectionがスローされるべきとき、またはnull値を返してチェックする必要があるときこの値がnullの場合はクライアント上でユーザセッションの期限が切れたとき、またはnullを返すときに例外をスローする
例外的な状況が発生する可能性がありますが、私たちはそれを防ぐことはできません。また私は、制御フローとして例外を使用すべきではないことを読んだ。
私の場合、多くのユーザーがリクエストを行い、ユーザーセッションが期限切れになっているかどうかを確認する方法があります(そして10分後に期限が切れます)。私はこの状況を防ぐことができないので、私はそこで例外をスローする必要がありますが、その状況が10分ごとに発生する場合、反対側では例外が高価ですし、nullを返して、クライアントはパフォーマンスの点で優れています。この場合、あなたは何をしますか?
これは私の方法である:
@Override
public Integer getUserIdBySessionKey(String sessionKey) {
User user = userSessions.get(sessionKey);
boolean isUserSessionValid = isUserSessionValid(user);
return isUserSessionValid ? user.getUserId() : null;
}
*ユーザーセッションが期限切れであるかどうかを確認する方法があります。*:セッションが期限切れの場合はtrueを返し、そうでない場合はfalseを返します。私はあなたの方法が実際にそれをしないと思います。それを記述するのではなく、コードを投稿してください。 –
@JBニジェット、されています。私の質問は、これまでのところnullが返されますセッションは有効ではありませんが、私は "ExpiredSessionException"をスローする可能性があります、多分1つのオプションか別のオプションの間で選択する大きな問題ではないが、私は最もきれいに可能な場合 – fgonzalez
このケースから呼び出しコードが復旧する可能性がある場合は、オプションを返します。一方、呼び出し側コードがこのケースを処理すべきではなく、セッションが無効なときにグローバル例外ハンドラを呼び出すだけの場合は、実行時例外がスローされます。いずれにせよ、私はチェック例外をスローしません。 –