用于处理异常的最佳c#开源工具

时间:2009-09-12 10:24:37

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

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

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

6 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

您可以使用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.

您也可以使用Microsoft的Exception Handling Application Block。MSDN简介如下:

企业库异常处理应用程序块允许开发人员和策略制定者创建一致的策略来处理企业应用程序的所有体系结构层中发生的异常。它通过以下方式实现:

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

答案 2 :(得分:3)

您可以查看Exceptioneer - 虽然它不是开源的,但它是免费的。

答案 3 :(得分:1)

这是我见过/使用过的最好的。我修改它以适应我支持的应用程序,结果非常好。

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

Jeff Atwood's exception handler

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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