サービスレイヤーに次のコードがあり、EFを使用してデータベースに新しいユーザーを追加します。
public User AddUser(User user)
{
using (var context = DataObjectFactory.CreateContext())
{
var userEntity = Mapper.Map(user);
context.AddObject("UserEntities", userEntity);
context.SaveChanges();
return Mapper.Map(userEntity);
}
}
そして、これは次のメソッドを介してサービスレイヤーによって呼び出されます。
public UserResponse GetSubmitUser(UserRequest request)
{
var response = new UserResponse(request.RequestId);
var user = Mapper.FromDataTransferObject(request.User);
response.User = Mapper.ToDataTransferObject(UserDao.AddUser(user));
return response;
}
AddUserに到達する前に、特定のクライアントとサーバーの検証を行いますが、未処理の例外を処理する方法がわかりません。
たとえば、context.SaveChanges()がエラーをスローした場合、エラーの詳細をプレゼンテーション層に戻すにはどうすればよいですか?
私は次のようにAddUser内にtry/catchを配置することを考えています:
public User AddUser(User user)
{
try
{
using (var context = DataObjectFactory.CreateContext())
{
var userEntity = Mapper.Map(user);
context.AddObject("UserEntities", userEntity);
context.SaveChanges();
return Mapper.Map(userEntity);
}
}
catch (Exception)
{
return ??
}
}
しかし、AddUserの戻りタイプはUserであり、例外が発生したときに何を返す必要があるのかわかりません。例外の詳細をUserResponseメソッドに返すことができれば、エラーの詳細を保持するためにそこにある応答オブジェクト内のいくつかのフィールドにデータを入力できますが、catchセクション内から何を返すかを確認してください。
データアクセス層、サービス層、プレゼンテーション層などの多層アプリケーションでキャッチして処理する必要のある例外を特定する方法を理解しようとしています。主に、例外の詳細をユーザーに表示する方法を理解しようとしています。解像度。
ありがとう