前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在.NET Core程序中设置全局异常处理

在.NET Core程序中设置全局异常处理

作者头像
yoyofx
发布2018-09-05 11:21:48
1.7K0
发布2018-09-05 11:21:48
举报
文章被收录于专栏:ASP.NETCoreASP.NETCore

以前我们想设置全局异常处理只需要这样的代码:

代码语言:javascript
复制
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下, 欢迎一起交流。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档