在.NET Core程序中設置全局異常處理

之前咱們想設置全局異常處理只須要這樣的代碼:git

1 AppDomain currentDomain = AppDomain.CurrentDomain;
2 currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);

可是在.NET Core中並無AppDomain的相關實現,至少在.NET Core最新的發佈版本里沒有。github

之前我和網友@SillyPGM的討論,而後咱們查看了部分Clr的源代碼後發現,在AppContext類裏有UnhandledException的實現代碼,可是結果又一次失望,最新的代碼是14天前提交的。post

帶着沮喪我去翻看了社區提交的ISSUES 以下:  https://github.com/dotnet/corefx/issues/6398單元測試

最後發現了由SamuelEnglard提交的有關AppDomain的解決方案,通過SillyPGM的驗證,證實了這個第三方庫的有效性。測試

這個庫的原理很簡單就是經過反射將AppDomain類的事件字段,而後經過構建ExpressionTree生成Delegate。spa

原理很簡單,可是包含了智慧,之後有什麼搞不定的,看看源代碼,若是有實現就直接照着他的方案來吧。code

你們一塊兒觀摩:https://github.com/SamuelEnglard/System.AppDomain  上面有單元測試blog

固然也不須要把源代碼Down下來本身搞,做者給我們提供了Nuget:  https://www.nuget.org/packages/System.AppDomain/2.0.11事件

 

 

GitHub:https://github.com/maxzhang1985/YOYOFx  若是覺還能夠請Star下, 歡迎一塊兒交流。get

.NET Core 和 YOYOFx 的交流羣: 214741894 .NET Core跨平臺 

若是你以爲本文對你有幫助,請點擊「推薦」,謝謝。

相關文章
相關標籤/搜索