2015-01-09 11 views
7

Ho due domande relative alla gestione delle eccezioni nel framework Spring.DataAccessException vs SQLException

1) Perché l'architettura DataAccessException di Spring Framework è un'eccezione di runtime mentre l'anomalia controllata di Java Java SQLException?

2) Quale vantaggio offre la gestione delle eccezioni di Spring sul meccanismo di eccezione di handlnig di Java?

risposta

7

Il motivo per utilizzare DataAccessException su SQLException è che descrive più in generale il problema. Se si dispone di un repository o di un'interfaccia DAO con due diverse implementazioni, una per Oracle e una per Cassandra, è possibile che si verifichi questo errore di eccezione espressa per entrambe le implementazioni.

Per quanto riguarda il motivo per cui questo è Runtime e non un'eccezione controllata, consente ai chiamanti di non dovere gestirlo esplicitamente. Nella mia esperienza sembra che se viene lanciato uno SQLException o DataAccessException non c'è molto che possa o voglio fare al riguardo, se non lasciarlo scoppiare a qualcuno che può farlo. Dover dichiarare i materiali da lanciare a ogni livello è un onere maggiore per il chiamante. Se uno di loro si preoccupa di catturarlo e gestirlo, può farlo.

Ecco i JavaDocs (grazie @ Tom!)

  1. DataAccesssException
  2. SQLException
+0

Grazie per i link @ Tom, inline sopra. Buona chiamata – Todd

Problemi correlati