在抛出异常时发送电子邮件

时间:2010-05-30 01:45:08

标签: java exception-handling

我编写了一个java类,如果方法抛出异常,则会通过java邮件向管理员发送一封电子邮件。

它有效 - 我的问题是w.r.t elegant - 为了捕获main方法抛出的异常,sendEmail()方法驻留在main方法的catch块中。 sendEmail()方法有自己的try-catch块。

实际上 - 看起来如下 - 是否有更美妙的写作方式?

try {  
    foo;  
}  
catch {  
   try{  
    sendEmail();  
  }  
  catch {  
   log(e.message);  
  }  
}  

2 个答案:

答案 0 :(得分:20)

如果你想要“更优雅”的东西,一个简单的建议是让你的sendEmail帮助方法捕获并记录电子邮件例外。 (我不认为您希望例外传播......或做其他恢复......)


但是,有一些更重要的可以说。您在此处实施的是报告错误的错误方法

  • 如果您的应用程序出现严重错误,您可能会通过多封电子邮件向管理员发送垃圾邮件,报告同一问题,结束,结束......

  • 通过从代码深处发送电子邮件,您使管理员难以集成应用程序的错误报告。

更好的方法是通过Java日志框架(如Log4J)报告问题。如果管理员想要他/她可以配置某种监控系统,如LogWatch,Nagios等,这样的监控系统将检测和分类各种记录器流中的错误,异常等(如应用程序的错误),de - 如果管理员配置了,则 通过电子邮件,寻呼机等发送通知。

答案 1 :(得分:3)

Java可以嵌套try / catch块。

如果您愿意,可以将try / catch sendmail块移动到另一种方法。当try / catch块更复杂时,它将使代码更容易理解。