Powodem używania DataAccessException
przez SQLException
jest to, że bardziej ogólnie opisuje problem. Jeśli masz repozytorium lub interfejs DAO, który ma dwie różne implementacje, jedną dla Oracle i jedną dla Cassandry, możesz mieć jeden wyjątek wyrażający awarie dla obu implementacji.
Jeśli chodzi o to, że jest to Środowisko wykonawcze, a nie sprawdzany wyjątek, umożliwia on osobom dzwoniącym, aby nie musiały tego jawnie obsługiwać. W moim odczuciu wydaje mi się, że jeśli zostanie wyrzucony SQLException
lub DataAccessException
, nie ma zbyt wiele rzeczy, które mogę lub chcę z nim zrobić, poza tym, że może to być bańką dla kogoś, kogo można. Konieczność zadeklarowania mocy na każdej warstwie jest większym obciążeniem dla osoby dzwoniącej. Jeśli któryś z nich dba o złapanie i poradzenie sobie z tym, może.
Oto Javadocs (dzięki @Tom!)
- DataAccesssException
- SQLException
Dzięki za linki @Tom, włączonych powyżej. Dobra decyzja. – Todd