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


以前我們想設置全局異常處理只需要這樣的代碼:

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 .NET Core跨平台 

如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM