2010-05-30 16 views
5

He escrito una clase java donde si un método arroja una excepción, se envía un correo electrónico, a través de correo java, con un informe a los administradores.Enviando un correo electrónico cuando se lanza una excepción

Funciona - mi pregunta es w.r.t elegance - para captar la excepción lanzada por el método principal, el método sendEmail() reside en el bloque catch del método principal. El método sendEmail() tiene su propio bloque try-catch.

En efecto, como se ve a continuación, ¿hay alguna forma más hermosa de escribir esto?

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

Respuesta

3

Java puede haber anidado try/catch blocks.

Si lo desea, puede mover el bloque try/catch sendmail a otro método. Cuando los bloques try/catch son más complejos, harán que el código sea más fácil de entender.

19

Si quiere algo "más elegante", una sugerencia simple es hacer que su método de ayuda sendEmail capture y registre las excepciones de correo electrónico. (No creo que desea que las excepciones se propaguen ... o hago alguna otra recuperación ...)


Sin embargo, hay algo más importante que decir. Lo que está implementando aquí es el acercamiento erróneo a los errores de informe.

  • Si algo va muy mal con su aplicación hay una posibilidad de que se SPAM el administrador con múltiples correos electrónicos de informes sobre el mismo problema, y ​​otra, y otra ...

  • Por envío de correos electrónicos desde lo más profundo de su código, le está dificultando al administrador integrar el informe de errores de su aplicación.

Un mejor enfoque es informar el problema a través de un marco de registro Java como Log4J. Si el administrador desea que él/ella pueda configurar algún tipo de sistema de monitoreo como LogWatch, Nagios, etc., etc. Este sistema de monitoreo detectará y clasificará errores, anomalías, etc. (como los errores de su aplicación) en las diversas secuencias de registro, de -upup them, y si el administrador lo configura envía una notificación por correo electrónico, buscapersonas o lo que sea.

+1

+1 "Acción de registro + fuera de línea" es realmente tan bueno – JoseK

+1

+1, siempre desacopla el código de la aplicación de la supervisión de las operaciones del sitio (contactando administradores, etc.) –

Cuestiones relacionadas