前情提要
筆者這篇就講一點輕鬆的話題,筆者慣用的設計,就是不喜歡在到處放try catch
,希望在一個地方統一try catch
就好,這樣若要改變Exception
處理行為,就改一個地方即可,當然有時你為了要配合某種情境,碰到Exception
,要將某一些處理狀態要壓成F
等等,無論如何,筆者都會先設計一個GlobalErrorHandler
做統一抓取Exception
並處理。
內容
以dotnet core
的設計架構,有很多種形式撰寫並達到Global Error Handler
的效果,筆者選擇最直覺的方式:Global Error Handling Middleware
。
撰寫GlobalErrorHandlingMiddleware
1 | public class GlobalErrorHandlingMiddleware |
就這麼簡單,把_next.Invoke(context)
用try catch
包起來即可。
註冊GlobalErrorHandlingMiddleware
1 | public class Startup |
結論
Global Error Handler
是滿重要的,透過簡單的Middlware
機制,可以抓取各式各樣的Exception
,也可以在該地方辨別不同的Exception
類型,並針對每一種類型處理不一樣的效果。
參考
https://blog.johnwu.cc/article/ironman-day17-asp-net-core-exception-handler.html