.NET中的异常通知

时间:2011-04-15 07:14:01

标签: .net wpf exception-handling email-integration publish-subscribe

我正在开发一个我正在开发的WPF程序,我想捕获异常并向中央(异地)权限发送通知,将控制权返回给用户。在Firefox,Eclipse等软件中常见的系统

即便:

用户单击我的WPF程序中已损坏的按钮。捕获异常并向用户显示一个对话框“狗屎,我们搞砸了。我们已经收到通知并会尽快修复它。同时,您可能会对<some smart summary of events>小心”

之后,控制以可用状态返回。在后端,通过电子邮件或某些发布/订阅接口向开发团队发送异常(回溯等)的副本。

基本上,我想要像Hoptoad或Exceptional(Rails)这样的东西。

  1. 此类库是否已存在?
  2. 如果没有,用于构建它的最佳电子邮件和/或发布/订阅库是什么。

4 个答案:

答案 0 :(得分:1)

您可能需要查看the Enterprise Library(EntLib) - 日志记录应用程序块。

它不会自动记录异常,但允许您使用(并创建自定义)接收器(如事件日志和数据库)来存储消息。

答案 1 :(得分:0)

Redgates smartassembly有一个异常报告器可以解决这个问题。如果不自己滚动也不是太困难。

答案 2 :(得分:0)

我们在之前的团队中使用过EntLib的日志记录,这非常有用,无论何时抛出异常,它都会记录到DB并向我们发送电子邮件。

在我目前的团队中,我们使用简单的电子邮件异常功能,我们在其中显示错误,用户可以选择向我们发送错误(它还会截取屏幕截图以及完整的日志文件,而不是jsut异常,这是有时很有用)

答案 3 :(得分:0)

// WPF might have another event, this one works for winforms
Application.ThreadException += OnUnhandledThreadException;

//console apps
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;

// example method
static void OnUnhandledException(object sender, UnhandledExceptionEventArgs args) 
{
    Exception e = (Exception) args.ExceptionObject;

    SmtpClient client = new SmtpClient("my.smtp.server");
    var message = new MailMessage("support@mycompany.se", "mycoolapp@somewhere")
        { 
            Subject = "App failed",
            Body = e.ToString()
        };
    client.Send(message);

    MessageBox.Show("Whoops. App failed. Sorry. Goodbye!");
}