【发布时间】:2012-09-25 17:15:14
【问题描述】:
我们的服务层中有以下代码,我们使用 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() 以某种方式抛出错误,我们如何将错误详细信息返回到表示层?
我正在考虑将 try / catch 放在 AddUser 中,如下所示:
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 部分中返回什么。
我试图了解如何识别应该在多层应用程序中捕获和处理的异常,一个具有数据访问层、服务层、表示层等的应用程序。主要是想弄清楚如何将异常详细信息呈现给用户进行解析。
谢谢
【问题讨论】:
标签: c# entity-framework error-handling service-layer data-layer