2021年3月21日 星期日

ASP.NET Core 3.1 Middleware 幾種例外錯誤處理方式

在MVC 既有的流程中,已有 Exception Filter ,但僅能捕捉到 Action 與 Action Filter 發生的錯誤;

然而 asp.net core 加入了 middleware ,所以middleware 發生的例外錯誤,就交給了

Middleware ExceptionHandler。

由於 ASP.NET Core 有提供內建 Exception Handler,所以可以直接拿來使用


發生例外錯誤時導向指定頁面:


新增錯誤頁面 /Error/Index,左邊為view 內容,右邊為檔案結構


Startup.cs 增加相關程式碼,如下圖所示


第一步:註冊View頁面

因發生例外錯誤導頁的關係,故需要可以檢視頁面


第二步:設定模擬環境

因要模擬正式環境,故使用此方法測試


第三步:指定導頁路徑

發生錯誤導向 Error 頁面


第四步:加入路由設定

預設 default 路由為  Home/Index


設計預計發生例外錯誤的Controller,這邊是 api/map/id,使用http 動詞 get


實際畫面如下



發生例外錯誤時回傳指定值或訊息:


程式碼如下圖,註解導頁程式碼,另外加入 ExceptionHandlerOptions ,並指定相關內容,

其中會指定 StatusCode,以及回傳 「Error」 文字



實際畫面如下



Middleware 發生例外錯誤,使用自訂類別攔截


設計自訂類別,在 Invoke 加入 try - catch


Startup.cs 加入相關 middleware,如下圖,因為有註冊順序的關係,所以需要先在 Configuare 方法,

一開始就加入自訂的MyMiddlewareException ;然後在 middleware 2 - before 之前發生例外錯誤,

這邊使用 「除以0 」的錯誤觸發。



實際輸出畫面

沒有留言:

張貼留言