我們在服務層中使用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之前,但我不知道如何處理未處理的異常(S)。
例如,如果以某種方式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的返回類型是用戶,我不知道我應該是當發生異常返回什麼。如果我可以將異常詳細信息返回給UserResponse方法,則可以在響應對象中填充某些字段,這些字段用於保存錯誤詳細信息,但現在確定要從catch部分返回什麼內容。
我想了解如何識別應該在多層應用程序中捕獲和處理的異常,例如數據訪問層,服務層,表示層等。主要試圖找出如何表達異常詳細信息給用戶解決。
感謝
感謝您的詳細解釋。 – 03Usr