处理C#中所有异常的最简洁方法

时间:2017-05-25 09:18:20

标签: c# events exception-handling castle-windsor

我一直在研究处理应用程序所有异常的最佳方法,而不会弄乱代码。这里的主要目标是将有关异常的信息发送到外部平台,例如Application Insights。 到目前为止,我已经找到了以下方法:

  • 城堡拦截器:
    到目前为止,这是最好的方法,问题是,对于截获的方法,方法是虚拟的,或者类必须是接口的。由于我正在开发一个非常大的应用程序,因此不需要这些更改。

  • 活动:
    使用AppDomain也会考虑使用UnhandledException,但由于我有几个需要进行大量更改的应用程序域,因此仅针对异常处理类,这不是最佳的,因为类不应仅仅因为异常处理而混乱。 除了AppDomains的数量,我还有几个运行的线程,这种处理程序不会捕获异常。

  • PostSharp:
    PostSharp与Castle的工作方式类似,如果我理解正确的话,这里的问题是我必须为我想截获的所有方法添加属性/装饰器,也不是一个非常好的方法。


如果有人对这里的最佳方法有任何建议,我将非常感激。

1 个答案:

答案 0 :(得分:0)

有一篇很好的文章位于From the Firebase API,讨论了大型项目中的错误处理。可能最不具侵入性的方法是使用全局异常处理程序。我还建议使用诸如log4net之类的库,因为它可以使用多个存储(本地文件,SQL,.....)记录异常详细信息,并且可以从配置文件重新配置,从而避免代码更改,重新编译和应用程序分发/安装。

对于那些不熟悉DNCMag的人来说 - 这是一本免费杂志,适用于有许多优秀文章的编码员,可以在https://dncmagazine.blob.core.windows.net/edition30/DNCMag-Issue30.pdf查看