use*_*829 5 java exception-handling
我编写了一个java类,如果方法抛出异常,则会通过java邮件向管理员发送一封电子邮件.
它有效 - 我的问题是优雅 - 为了捕获main方法抛出的异常,sendEmail()方法驻留在main方法的catch块中.sendEmail()方法有自己的try-catch块.
实际上 - 它看起来像下面 - 是否有更美妙的写作方式?
try {
foo;
}
catch {
try{
sendEmail();
}
catch {
log(e.message);
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 20
如果你想要"更优雅"的东西,一个简单的建议是让你的sendEmail帮助方法捕获并记录电子邮件异常.(我不认为你想要例外传播......或做一些其他的恢复......)
但是,有一些更重要的事情要说.您在此处实施的是报告错误的错误方法.
如果您的应用程序出现严重错误,您可能会通过多封电子邮件向管理员发送垃圾邮件,报告相同的问题,以及结束...
通过从代码深处发送电子邮件,您使管理员难以集成应用程序的错误报告.
更好的方法是通过Java日志框架(如Log4J)报告问题.如果管理员想要他/她可以配置某种监控系统,如LogWatch,Nagios等,这样的监控系统将检测和分类各种记录器流中的错误,异常等(如应用程序的错误),de - 他们,如果管理员配置它通过电子邮件,寻呼机或其他任何方式发送通知.
Java 可以有嵌套的 try/catch 块。
如果您愿意,可以将 try / catch sendmail 块移至另一个方法。当try/catch块比较复杂时,会让代码更容易理解。