2015-01-09 5 views
7

Ich habe zwei Fragen im Zusammenhang mit der Ausnahmebehandlung im Spring-Framework.DataAccessException vs SQLException

1) Warum ist Spring Framework DataAccessException eine Laufzeitausnahme, während Core Java SQLException eine geprüfte Ausnahme?

2) Welchen Vorteil bietet die Ausnahmebehandlung von Spring gegenüber dem Ausnahme-Handlnig-Mechanismus von Java?

Antwort

7

Der Grund DataAccessException über SQLException zu verwenden ist, dass es das Problem allgemein beschreibt. Wenn Sie eine Repository- oder DAO-Schnittstelle mit zwei verschiedenen Implementierungen haben, eine für Oracle und eine für Cassandra, können Sie diese eine Ausnahme Fehler für beide Implementierungen ausdrücken lassen.

Warum ist dies Runtime und keine geprüfte Ausnahme, es ermöglicht den Aufrufern nicht explizit zu behandeln. Es scheint in meiner Erfahrung, dass, wenn ein SQLException oder DataAccessException geworfen wird, es nicht viel gibt, was ich tun kann oder will, außer es auf jemanden hinausblasen zu lassen, der kann. Die throwables auf jeder Ebene deklarieren zu müssen, belastet den Aufrufer. Wenn einer von ihnen sich darum kümmert und es anfasst, können sie es tun.

Hier sind die JavaDocs (Danke @ Tom!)

  1. DataAccesssException
  2. SQLException
+0

Danke für die Links @ Tom, über inlined. Guter Ruf. – Todd

Verwandte Themen