Person をデータベースに格納できる Web アプリケーションがあるとします。すべての人は一意の電子メール アドレス (またはユーザー名など) を持っている必要があります。ユーザーが既に存在する電子メール アドレスを持つユーザーを追加しようとすると、エラー メッセージが表示されたフォームが返されます (通常の検証エラーの場合と同様)。
この種のエラーは、サービス レイヤーからコントローラー、そしてビューにどのように発生するのが最も一般的でしょうか? サービス メソッドは、コントローラーがキャッチするために例外をスローする必要がありますか、それとも値または何らかの結果オブジェクトを返す必要がありますか?
最終的にサービス レイヤーを使用して Web サービスを生成したい場合、これによって処理方法が変わりますか?
ベスト プラクティスやサンプル アプリケーションへの提案やリンクをいただければ幸いです。