簡體   English   中英

在ASP.NET MVC和C#中使用自定義異常類時未捕獲異常

[英]Exception not catching when using Custom Exception classes in ASP.NET MVC and C#

我創建了一些自定義異常類

public class CreateNewUserWebException : Exception
{
    public CreateNewUserWebException(string email): base(
        string.Format("[{0}] - User could not be added.", email))
    {
    }
}
public class CreateNewUserEntityFrameworkException : System.Data.DataException
{
    public CreateNewUserEntityFrameworkException(string email)
        : base(
            string.Format("[{0}] - User could not be added.", email))
    {
    }
}

這是我的控制器代碼

try
{
    var user = _createUserModule.CreateUser(model);
    CookieManager.SetAuthenticationCookie(user, model.Email, rememberMe: false);
    return RedirectToAction("Index", "Bugs");
}
catch (CreateNewUserEntityFrameworkException exception)
{
    this.ModelState.AddModelError("", "Some error occured while registering you on our sytem. Please try again later.");
    Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
}
catch (CreateNewUserWebException exception)
{
    this.ModelState.AddModelError("", "Some error occured while registering you on our sytem. Please try again later.");
    Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
}
catch(Exception exception)
{
    this.ModelState.AddModelError("", "Some error occured while registering you on our sytem. Please try again later.");
    Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
}

我故意完全誘發了一個主鍵沖突異常,它是

在此處輸入圖片說明

但是我的自定義異常類未捕獲異常。 它沒有被最后一個異常捕獲塊捕獲。

我不明白為什么會這樣。 有人可以幫我這個忙嗎?

您在調試器中突出顯示的部分是內部異常。 CLR不會使用它來確定要輸入哪個catch塊。 外部異常只是DbUpdateException您尚未DbUpdateException指定特定的catch塊。

甚至內部異常也只是DataException它不是您的自定義異常的實例。

您沒有顯示任何實際引發異常的代碼-您確定它已被使用嗎? 您編寫了什么代碼來告訴EF引發您的異常,而不是本應引發的異常?

(鑒於您的評論,我不確定您是否完全理解異常處理。創建自定義異常不會以某種方式讓您在不引發該異常的情況下捕獲該異常的實例-在使用該異常之前,仍然需要拋出該異常的實例)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM