以前我們想設置全局異常處理只需要這樣的代碼:
1 AppDomain currentDomain = AppDomain.CurrentDomain; 2 currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);
但是在.NET Core中並沒有AppDomain的相關實現,至少在.NET Core最新的發布版本里沒有。
以前我和網友@SillyPGM的討論,然后我們查看了部分Clr的源代碼后發現,在AppContext類里有UnhandledException的實現代碼,但是結果又一次失望,最新的代碼是14天前提交的。
帶着沮喪我去翻看了社區提交的ISSUES 如下: https://github.com/dotnet/corefx/issues/6398
最后發現了由SamuelEnglard提交的有關AppDomain的解決方案,經過SillyPGM的驗證,證明了這個第三方庫的有效性。
這個庫的原理很簡單就是通過反射將AppDomain類的事件字段,然后通過構建ExpressionTree生成Delegate。
原理很簡單,但是包含了智慧,以后有什么搞不定的,看看源代碼,如果有實現就直接照着他的方案來吧。
大家一起觀摩:https://github.com/SamuelEnglard/System.AppDomain 上面有單元測試
當然也不需要把源代碼Down下來自己搞,作者給咱們提供了Nuget: https://www.nuget.org/packages/System.AppDomain/2.0.11
GitHub:https://github.com/maxzhang1985/YOYOFx 如果覺還可以請Star下, 歡迎一起交流。
.NET Core 和 YOYOFx 的交流群: 214741894
如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。