gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:49:32 25 4
gpt4 key购买 nike

我一直在研究处理应用程序所有异常的最佳方法,而不会对代码造成太多干扰。此处的主要目标是将有关异常的信息发送到外部平台,例如 Application Insights。到目前为止,我发现了以下方法:

  • 城堡拦截器:
    这是迄今为止最好的方法,问题是,对于要拦截的方法,方法要么是虚拟的,要么类必须是接口(interface)的。由于我正在处理一个非常大的应用程序,因此不需要进行这些更改。

  • 事件:
    也可以考虑使用 AppDomain UnhandledException,但由于我有几个应用程序域需要进行大量更改,所以只为异常处理类,这不是最佳的,因为类不应该仅仅因为异常处理而被弄乱。除了 AppDomains 的数量之外,我还有几个线程正在运行,此类处理程序不会从这些线程中捕获异常。

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


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

最佳答案

有篇精品文章位于https://dncmagazine.blob.core.windows.net/edition30/DNCMag-Issue30.pdf讨论大型项目中的错误处理。侵入性最小的方法可能是使用全局异常处理程序。我还建议考虑使用诸如 log4net 之类的库,因为它可以使用多个存储(本地文件、SQL、......)记录异常详细信息,并且可以从配置文件中重新配置,从而避免代码更改、重新编译和应用程序分发/安装。

对于那些不熟悉 DNCMag 的人 - 这是一本面向程序员的免费杂志,其中包含许多优秀文章,可以在 http://www.dotnetcurry.com/magazine/ 查看。

关于c# - 在 C# 中处理所有异常的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44176779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com