我迷失在什么/哪里/何时应该在我的asp.net mvc web应用程序中捕获异常。以及如何为最终用户显示错误消息。例如我得到了以下操作方法: -从我的模型类捕捉异常的最佳方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ServerToEdit serverToEdit)
{
try
{
if (ModelState.IsValid)
{
if (!(repository.IsIPUnique(serverToEdit.TechnologyIP.IPAddress, 0)))
{
ModelState.AddModelError("TechnologyIP.IPAddress", "Error occured. The Same IP might already assinged.");
return View(serverToEdit);
}
if (!(repository.IsServerNameUnique(serverToEdit.Server.Name, 0)))
{
ModelState.AddModelError("Server.Name", "Error occured. The Same Server Name might already assinged.");
return View(serverToEdit);
}
repository.InsertOrUpdateServer(serverToEdit.Server,serverToEdit.TechnologyIP,User.Identity.Name);
repository.Save();
return RedirectToAction("Index");
}
else
{
return View(serverToEdit);
}
}
catch (DbUpdateException)
{
ModelState.AddModelError(string.Empty, "Error occured. The Same IP/Name might already assinged.");
}
catch (DbEntityValidationException)
{
ModelState.AddModelError(string.Empty, "Error occured. User might not be defiend inside Active Directory.");
}
return View(serverToEdit);
}
我有一个关于我的代码如下问题: -
我有两个服务的方法(IsIPUnique & IsServeNameUnique);但是Controller操作方法是从我的存储库模型类中调用这些服务方法的最佳位置?
当前如果服务方法失败,我手动编写模型状态错误并将视图返回给用户。那么这是为服务方法编写模型状态错误的正确方法吗?
如果引发DBUpdateException,我假设IP或serve-name已存在于数据库中(如果服务方法无法检查高流量应用程序,则可能发生这种情况)。但DBUpdateExceptio有很多其他原因需要提出。所以我的问题是关于什么是处理DBUpdateException的最佳方法。并显示它被提出的原因是什么?
感谢您的回复。但我认为ex.InnerException将包含一个技术错误描述。所以向用户显示该错误是正常的,或者在将这些错误显示给用户之前,它们将很好地处理这些错误。 –