MVC使用異常過濾器處理異常

靜默的白菜啊發表於2020-10-22

在mvc的開發過程中,我們可能會遇到一些程式碼錯誤導致的異常,如下圖所示,展示了一個除數為0的異常。

在這裡插入圖片描述
在mvc裡,自動為我們提供了一種異常處理器,並且應用在所有控制器上。

在這裡插入圖片描述
我們開發時所有的錯誤都由它捕捉並展示,因此我們看到執行這個action的介面如下所示。
在這裡插入圖片描述
在給使用者使用之後,可能還會出現其他錯誤,這樣處理錯誤的介面客戶可能並不喜歡。因此我們可以把錯誤的介面處理下,自定義一個異常處理器並配置異常處理的action介面。

第一步,先建立一個異常處理過濾器。

在Filters資料夾裡建立類,類名為 自定義+Attribute,如我建立的類名為myEorroAttribute。然後在繼承FilterAttribute和IExceptionFilter,表明這是一個異常過濾器。選中IExceptionFilter,右擊,快速實現方法,出現OnException用於執行完view後接收異常。介面如下圖所示。
在這裡插入圖片描述
輸入如圖所示程式碼,定義一個變數用來接收異常的原因,儲存到一個session裡。再把異常狀態改變為已處理,然後轉跳到自定義的處理異常的action,來展示異常。
在這裡插入圖片描述

第二步,建立action展示異常。

第一步裡跳轉到login控制器的error介面處理異常,所以我們在login控制器裡建立error
在這裡插入圖片描述
然後新增檢視,在檢視裡展示錯誤並告訴使用者相關資訊。

在這裡插入圖片描述

第三步,配置我們自己建立的異常過濾器

在這裡,我選擇的是全域性應用我自己建立的異常過濾器。要注意的是,由於系統建立的異常過濾器也是全域性應用,所以要註釋掉。
在這裡插入圖片描述
配置之後再執行,結果如下圖所示
在這裡插入圖片描述

總結:自己開發時,建議使用系統預設的異常過濾器,這樣有錯誤時,我們更能清楚知道錯誤在哪。
給使用者時建議使用自己的異常處理器,介面還可以設計的再好看一點。記得註釋掉系統預設的異常過濾器。

相關文章