2012-05-20 8 views
7

Sviluppo un'applicazione con Struts, Spring e Hibernate.dove gestire la molla DataAccessException

Il mio DAO utilizza jdbc molla e tutto il suo metodo genera DataAccessException (che non è mascherato).

Dove devo gestire queste eccezioni? So che è un'eccezione non controllata, ma penso di dover dire all'utente se c'è un problema con il db o la sua connessione.

Penso che dovrei rilanciare DataAccessException dai miei metodi della classe di servizio per essere intercettato da Controller. Questa è una buona pratica?

Ho esaminato gli esempi dal pacchetto Spring e non ho trovato alcuna gestione delle eccezioni nel dominio o nell'area di servizio. DataAccessException sembra essere ignorato dopo aver lasciato l'area dao.

Si prega di suggerire un buon design per questa materia.

+0

possibile duplicato di [Posso utilizzare Spring DataAccessException direttamente nel livello di servizio] (http://stackoverflow.com/questions/10672879/can-i-use-spring-dataaccessexception-directly-in-service-layer) – Raedwald

risposta

13

DataAccessException sembra essere ignorato dopo aver lasciato l'area dao.

E questa è una buona cosa! Lascia che voli attraverso l'intera pila. Probabilmente hai transazioni sul livello di servizio: l'eccezione causerà in modo trasparente il rollback della transazione più esterna. Grande!

Ora troverà la sua strada verso il controller. Se lo prendi nel controller Struts, puoi ad es. restituire una vista diversa. Ma molto probabilmente non vuoi gestire l'eccezione in ogni azione Struts. Quindi lascia che l'eccezione voli ancora più in basso. Ad un certo punto Struts prenderà quell'eccezione e cercherà di gestirlo. Struts ha alcuni sofisticati meccanismi di gestione degli errori, troverete molte informazioni su di loro. Solitamente invoca alcune azioni personalizzate o una schermata di errore in base al tipo di eccezione.

Infine, se anche Struts non è in grado di gestire l'eccezione, verrà rimandato al contenitore, causando l'HTTP 503 con i dettagli delle eccezioni restituiti.

Come si può vedere è possibile controllare le eccezioni su molti livelli, in genere inferiore è meglio.

+0

è una risposta eccellente. Cudos! – markthegrea

Problemi correlati