私はすでにこの質問に対する答えを探しており、次の提案を見つけました。
- 常に値が見つかることを期待している場合は、値が見つからない場合に例外をスローします。例外は、問題があったことを意味します。値が欠落しているか存在している可能性があり、両方がアプリケーション ロジックに対して有効な場合は、null を返します。
- 本当にエラーである場合にのみ、例外をスローします。オブジェクトが存在しないことが予期される動作である場合は、null を返します。
しかし、私の(非常にカジュアルな)ケースでそれらをどのように解釈する必要がありますか: 私の Web アプリコントローラーは、特定の ID を持つユーザーの詳細を表示する要求を受信しています。コントローラーはサービス層にユーザーを取得するように要求し、サービスはオブジェクトが見つかった場合はそれを返します。そうでない場合は、「デフォルト」の場所へのリダイレクトが発行されます。
誰かがリクエスト URL 内で無効なユーザー ID を渡した場合、どうすればよいですか? それを「予期される動作」と見なして null をコントローラーに返す必要がありますか、それとも「問題または予期しない動作」と呼んで、サービス メソッド内で例外をスローし、コントローラー内でキャッチする必要がありますか?
結局、技術的には大きな違いではありませんが、標準的な慣習に従って正しい方法で行いたいと思います。ご提案いただきありがとうございます。
編集: アプリによって生成された URL が有効で存在していると仮定します。ユーザーがクリックすると、特定の ID を持つユーザーが見つかるはずです。ユーザーがブラウザーのアドレスバーに URL を手動で入力して、間違った (存在しない) ユーザー ID で URL にアクセスしようとした場合の対処方法を知りたいです。