次のようなメソッドを考えます。
registerUser(User user)
- このメソッドはUserをデータストアに登録する
- 発生しうるエラーには3種類あり次の通りである
- 「データストアへの登録の失敗」
- 「ユーザーネームの重複」
- 「パスワードに無効な文字が使われている」
registerUser
メソッドを呼び出す処理の中で、登録ができたのかどうかを判定したいです。
登録に失敗している場合、エラーの種別に応じてその後の処理を変更したいです。(例: ユーザーネームが重複している場合、「ユーザーネームが重複しているので変更してください」と促したい)
このような処理を行う場合次のような3つのフローが考えられます。
registerUser
はint
またはエラーオブジェクトを返す。呼び出し元は返ってきた数値またはオブジェクトからエラー情報を読み取るregisterUser
はエラーが起きた場合、それぞれのエラーに対応する例外を投げる。呼び出し元はtry-catch
文で処理を囲い、3種類の例外をcatchし処理を行う- 新しいメソッド
checkDuplicatedUsername
checkValidPassword
を用意し、それぞれ確認を行ってからregisterUser
を呼び出す。
個人的には1が好みなのですがJava的にはどうなのでしょうか?
以下2、3の私が考えたデメリットです。
2のデメリット
- 確実にエラーが起きないような場合でも、呼び出すたびに
try-catch
しなければならず冗長 - この方法で統一した場合コードが膨大になる
3のデメリット
registerUser
を呼び出すルールがメソッド内で閉じていない。(あらかじめ2つのメソッドを呼び出す前提となっているため、仕様を詳しく知らない人に不親切)
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。