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!)
- DataAccesssException
- SQLException
Grazie per i link @ Tom, inline sopra. Buona chiamata – Todd