Sono uno sviluppatore verde che sta cercando di ottenere un handle (har-har) sulla gestione degli errori in una grande applicazione java multistrato. Ci sono molte situazioni in cui credo che concatenare le eccezioni attraverso diversi livelli sia una buona idea; per esempio. quando un guasto nel chiamare fuori per qualche servizio esterno al livello più basso provoca problemi tutta la strada fino nella vista:Quando registrare le eccezioni concatenate?
- Content X richiesto, ma l'utente non è autorizzato
- causato da: Elenco dei autorizzate utenti è nullo
- causati da: gestione utenti webservice risposto Bad richiesta- parametro foo deve essere formattato come 'xyz'
- causato da: Elenco dei autorizzate utenti è nullo
L'eccezione più importante, quella il cui stacktrace voglio veramente esaminare, è l'ultimo della catena; che ho fatto una cattiva richiesta e ho bisogno di correggere la formattazione di foo. Ma quando lascio che questa eccezione esploda attraverso i livelli, ben incatenata con eccezioni significative per ogni livello ... quando finalmente catturo e registro la cosa, il comportamento di registrazione predefinito mi mostra sempre dei dettagli sull'eccezione più esterna, e forse 5 righe di stacktrace della causa principale.
Questo mi fa venir voglia di registrare le eccezioni mentre accadono, E lasciarle esplodere, ma poi si finisce per loggare la maggior parte delle cose due volte; quando accadono e quando alla fine vengono catturati.
Qual è la migliore pratica qui?
Ci saranno molte opinioni su questo, ma nessuna "verità". Scegli quello che funziona per te, le persone non saranno d'accordo, non importa quello che scegli. (personalmente mi piace ripensare la cosa fino a il livello più esterno e registrarlo lì) – Friso