前情提要
筆者這篇就講一點輕鬆的話題,筆者慣用的設計,就是不喜歡在到處放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