在Global Exception Handler中发送电子邮件?

时间:2012-02-07 16:08:55

标签: c# wpf exception-handling email-integration email-validation

我想将全局异常处理代码添加到C#WPF应用程序中,虽然看起来相当笨拙(似乎没有其他人这样做),但我想通过异常信息向开发人员发送电子邮件。我能想到的主要问题是,如果开发人员在部署软件后最终更改了他的电子邮件地址。也许给部门的电子邮件(例如listserv类型的电子邮件广播地址)会更合适?有没有人使用过这种方法,如果有的话,你提出了什么解决方案来确保有人获得异常生成的电子邮件?

这是最好的解决方案吗?

// in exception code (pseudocode)
try
  SendEmailToTheCoder();
catch
  on EmailAddressNotValid:
    try
      SendEmailToTheListServ()
    catch
      on EmailNotSent:  
        LogExceptionDataToLog("Bla");

...或者我的大脑又变成了梨形(我不知道这意味着什么,但它是英国的,所以它一定是邪恶的)#/ p>

2 个答案:

答案 0 :(得分:2)

最好的办法是将消息传递的详细信息保留在应用程序之外。

例如,您可以将错误记录到文本文件或其他类型的日志中,然后让外部应用程序或Windows服务监视器记录并决定要做什么 - 例如发送电子邮件或创建摘要当天的所有消息,通过电子邮件或类似的行动。

这样,您可以优化和修改发生这些错误时发生的情况,而无需更改程序代码。您还可以将该系统与其他应用程序一起使用,这些应用程序也只是将错误记录到文本文件中,与连接到SMTP服务器和发送消息相比,该文本文件的错误概率较低。

答案 1 :(得分:1)

我只想创建一个分发组,例如developer@yourcompany.com,并添加负责该分发组程序部分的人员。如果一个开发人员离开公司,代码中的任何内容都不需要更改,也不会先尝试一件事,然后再尝试另一件事。

更好的是,使用log4net之类的日志框架(nlog也很受欢迎);您可以将其配置为登录到不同的位置(xml,数据库,电子邮件等)。如果您确实登录到电子邮件,我总是会将其发送到通讯组,即使该通讯组只由一名成员组成。