在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 」的錯誤觸發。
實際輸出畫面
沒有留言:
張貼留言