2015-01-09 9 views
7

Mam dwa pytania związane z obsługą wyjątków w ramach Spring.DataAccessException vs SQLException

1) Dlaczego w ramach architektury Spring DataAccessException występuje wyjątek środowiska wykonawczego, podczas gdy sprawdzany wyjątek Core Java to SQLException?

2) Jaka jest przewaga oferty obsługi wyjątków Spring w porównaniu z mechanizmem obsługi wyjątków Java?

Odpowiedz

7

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!)

  1. DataAccesssException
  2. SQLException
+0

Dzięki za linki @Tom, włączonych powyżej. Dobra decyzja. – Todd

Powiązane problemy