我正在开发一个我正在开发的WPF程序,我想捕获异常并向中央(异地)权限发送通知,将控制权返回给用户。在Firefox,Eclipse等软件中常见的系统
即便:
用户单击我的WPF程序中已损坏的按钮。捕获异常并向用户显示一个对话框“狗屎,我们搞砸了。我们已经收到通知并会尽快修复它。同时,您可能会对<some smart summary of events>
小心”
之后,控制以可用状态返回。在后端,通过电子邮件或某些发布/订阅接口向开发团队发送异常(回溯等)的副本。
基本上,我想要像Hoptoad或Exceptional(Rails)这样的东西。
答案 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!");
}