【问题标题】:best c# open source tool for handling exceptions [closed]用于处理异常的最佳 C# 开源工具 [关闭]
【发布时间】:2010-11-27 17:45:24
【问题描述】:

有人可以指出一个专门用于异常处理的开源项目列表吗? 还是其中最好的工具?

更新:我想将它与 n 层 winform 应用程序一起使用。我想一劳永逸地捕获数据访问堆栈中发生的所有 3 或 4 种异常。然后将它们传递给 gui 堆栈并在消息框或其他内容中显示给用户。

【问题讨论】:

  • 定义“处理”。如果您想在异常情况下进行日志记录,您会得到很多答案,但还有其他方法可以处理异常(例如修复问题并重试)。

标签: c# .net winforms open-source exception-handling


【解决方案1】:

ELMAH 用于在 Web 应用程序中记录错误。它可能对你有用,也可能没用 - 你没有指定任何关于你想要它做什么,或者你是否需要它用于 Web 应用程序、WinForms、WPF 等。

【讨论】:

    【解决方案2】:

    您可以使用 Application_ThreadException 事件来全局处理所有异常。你可以找到更多关于它here

    [STAThread] static void Main() {
      Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
      Application.Run(new Form1());
    }
    
    private void button1_Click(object sender, System.EventArgs e) {
      throw new Exception("Whoops");
    }
    
    private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) {
      MessageBox.Show(e.Exception.Message);
    }
    

    要在异常情况下显示用户友好消息,您可以查看codeproject article.

    您也可以使用微软的Exception Handling Application Block。MSDN 的介绍如下:

    企业库异常处理应用程序块让开发人员和政策制定者可以创建一致的策略来处理企业应用程序的所有架构层中发生的异常。它通过以下方式做到这一点:

    • 它支持在应用程序的所有架构层中进行异常处理,并且不限于服务接口边界。
    • 它允许在管理级别定义和维护异常处理策略,以便政策制定者(可能是系统管理员和开发人员)可以定义如何处理异常。他们可以维护和修改管理异常处理的规则,而无需更改应用程序块代码。
    • 它提供了常用的异常处理功能,例如记录异常信息的能力,通过将原始异常替换为另一个异常来隐藏敏感信息的能力,以及通过包装原始异常来维护异常的上下文信息的能力在另一个异常中。这些函数封装在名为异常处理程序的 .NET 类中。
    • 它可以组合异常处理程序以产生对异常的期望响应,例如记录异常信息,然后用另一个异常替换原始异常。
    • 它允许开发人员创建自己的异常处理程序。
    • 它以一致的方式调用异常处理程序。这意味着处理程序可以在应用程序内部和跨应用程序的多个位置使用。

    【讨论】:

      【解决方案3】:

      你可以看看Exceptioneer——虽然它不是开源的,但它是免费的。

      【讨论】:

      • 这个非常面向 ASP.NET
      • 开箱即用,当未处理的异常仍未捕获时,它确实可以无缝连接到 ASP.NET。但是,我也可以在其他应用程序类型中使用它。
      • 看起来 Exceptioneer 已经停止开发了?从 2010 年 8 月起,一切似乎都停止了……
      • 我想是的。这些天我使用 NLog,虽然我也听说过很多关于直布罗陀的好消息:gibraltarsoftware.com
      • 知道 Exceptioneer 发生了什么吗?
      【解决方案4】:

      这是我见过/用过的最好的。我对其进行了修改以适应我支持的应用程序,结果非常好。

      我吓坏了许多开发人员,告诉他们哪一行代码有问题。

      Jeff Atwood's exception handler

      【讨论】:

        【解决方案5】:

        我想将它与 n 层 winform 应用程序一起使用。我想一劳永逸地捕获我的数据访问堆栈中发生的所有 3 或 4 种异常。 然后将它们传递给 gui 堆栈并在消息框或其他内容中显示给用户。

        【讨论】:

        • 请使用 cmets 讨论答案。
        • 我已将此评论编辑到您的问题中。您可以继续删除此答案。一般来说,作为提问者,您希望将有关您自己的问题的 cmets 放入问题本身。
        【解决方案6】:

        我最近开始使用NLog,这是记录异常和应用程序一般运行的绝佳方式。您可以生成一些真正可读的日志文件/电子邮件/等。那样。

        【讨论】:

          猜你喜欢
          • 2013-01-13
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多