簡體   English   中英

類型System.Exception的異常未處理

[英]Exception of type System.Exception is not handled

前言:請不要把我引向埃爾瑪。 我試圖自己理解MVC異常系統,而不僅僅是使用其他人的系統。

我正在使用MVC的異常系統來豐富自己的知識,但遇到了一個奇怪的異常。 我編寫了一個OnException方法,如下所示:

protected override void OnException(ExceptionContext filterContext)
{
    if (filterContext.ExceptionHandled == true)
    {
        return;
    }
    // log error
    ErrorLog(filterContext);

    // mark error as handled to prevent rethrow
    filterContext.ExceptionHandled = true;

    //show custom error page
    ViewBag.Code = filterContext.Exception is HttpException ? ((HttpException) filterContext.Exception).GetHttpCode() : 500;
    ViewBag.Exception = filterContext.Exception;
    filterContext.Result = View("Error");
}

我通過一個足夠簡單的調用將它扔到玩具控制器中:

if(something strange and bad happens)
{
    throw new Exception("When in trouble or in doubt, run in circles, scream and shout.");
}

我測試了異常,並得到以下異常:

發生類型為System.Exception的異常,並且未在用戶代碼中處理。

我發送給構造函數的字符串會作為錯誤消息的一部分進入異常系統。 當我繼續執行錯誤操作時,出現錯誤消息,並進入錯誤頁面,但是當我嘗試運行代碼時,我一直遇到上一個錯誤。 內部異常詳細信息為null,其余異常詳細信息對我來說太稀疏,無法使用它來找出問題所在,或者我將在此處閱讀而不是詢問。

我懷疑我收到此異常是因為我沒有讓基類完成對原始異常的處理,但是我恐怕不完全清楚為什么。 我已經閱讀了很多有關異常處理的文章,但是我並沒有碰到任何向我解釋了是否需要讓基類完成對異常的處理或者是否已經對異常進行處理的事情(我知道)完成就足夠了。 我見過自定義處理既沒有做也沒有做。

或者相反,如果我的猜想是錯誤的,並且完全是另外一回事,有人知道這可能是什么嗎? 拋出該異常的情況非常簡單,其他任何因素都不太可能影響到此情況。

有誰知道為什么我會收到這個錯誤?

我們可以看到的代碼看起來不錯,所以我認為該異常來自我們看不到的ErrorLog方法。

由於文件仍在使用中(您是否正確處理文件流?)或出於其他多種原因,您可能會收到錯誤消息。

您的OnException方法將覆蓋MVC的錯誤處理機制,因此在異常處理期間發生異常時,所有地獄都將松散。 MVC框架可能在某處try { ... } catch { ... }了一個非常高級的try { ... } catch { ... } ,只是為了防止應用程序崩潰,但它無法為您提供更多有關發生的情況的信息。

確保在引發異常( https://msdn.microsoft.com/en-us/library/x85tt0dd.aspx )時,Visual Studio調試器會中斷,然后執行代碼。 看一下引發的異常和涉及的代碼。 您將找到為什么該特定部分損壞的原因,或者將找到下一個StackOverflow問題的主題。 ;)

暫無
暫無

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

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