2010-05-30 5 views
5

Ho scritto una classe java dove, se un metodo genera un'eccezione, viene inviata un'e-mail, tramite posta java, con un rapporto agli amministratori.Invio di un'e-mail quando viene generata un'eccezione

Funziona - la mia domanda è w.r.t elegance - per catturare l'eccezione generata dal metodo principale, il metodo sendEmail() si trova nel blocco catch del metodo main. Il metodo sendEmail() ha il proprio blocco try-catch.

In effetti - sembra di seguito - c'è un modo più bello di scrivere questo?

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

risposta

3

Java può disporre di blocchi try/catch nidificati.

Se lo desideri, puoi spostare il blocco try/catch sendmail con un altro metodo. Quando i blocchi try/catch sono più complessi, renderà il codice più facile da capire.

19

Se desideri qualcosa di "più elegante", un semplice suggerimento è quello di prendere il tuo metodo helper sendEmail e registrare le eccezioni di posta elettronica. (Non credo che si desidera che le eccezioni di propagare ... o fare qualche altro recupero ...)


Tuttavia, c'è qualcosa di più importante da dire. Quello che stai implementando qui è l'approccio errato per segnalare errori.

  • Se qualcosa va storto con l'applicazione c'è una possibilità che si spam amministratore con più e-mail di segnalazione lo stesso problema sopra, e più volte, e più volte ...

  • Con l'invio di email dal profondo del codice, si sta rendendo difficile all'amministratore integrare la segnalazione degli errori dell'applicazione.

Un approccio migliore consiste nel segnalare il problema tramite una cornice di registrazione Java come Log4J. Se l'amministratore vuole è in grado di configurare un qualche tipo di sistema di monitoraggio come LogWatch, Nagios, ecc. Ecc. Tale sistema di monitoraggio rileverà e classificherà errori, anomalie, ecc. (Come gli errori della tua applicazione) nei vari flussi di logger, de -dupli e se l'amministratore lo configura invia una notifica via email, cercapersone o altro.

+1

+1 "Registrazione + azione offline" è davvero così migliore – JoseK

+1

+1, disaccoppia sempre il codice dell'applicazione dal monitoraggio delle operazioni del sito (contattando gli amministratori, ecc.) –

Problemi correlati