我迷失在什麼/哪裏/何時應該在我的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將包含一個技術錯誤描述。所以向用戶顯示該錯誤是正常的,或者在將這些錯誤顯示給用戶之前,它們將很好地處理這些錯誤。 –