Hallo.
Frage ist eigentlich recht kurz: Wie fange ich in JPA/Hibernate die Exceptions korrekt ab?
Bisher hab ich es so (pseudo-Code):
Beim Commit fliegt ja nun eine Exception. Ich habe auch in diversen Tutorials gelesen, dass die Persistence-Exception eigentlich alle möglichen Exceptions beinhaltet. Dies scheint aber nicht der Fall zu sein. Denn wenn durch eine Eingabe z.B. ein Constraint in der Datenbank verletzt wird, stürzt die Anwendung trotzdem ab mit:
Ich muss muss diesen Fall dann so fangen:
Diese ConstraintViolationException ist natürlich aus Hibernate und somit habe ich eine direkte Abhängigkeit von Hibernate im Code, was ich momentan nicht will.
Übersehe ich da irgendetwas, oder habe ich etwas falsch verstanden? Wenn ja, was muss ich denn alles an Exceptions fangen, damit bei einer Fehleingabe nicht gleich das Programm "abstürzt"?
Danke
Frage ist eigentlich recht kurz: Wie fange ich in JPA/Hibernate die Exceptions korrekt ab?
Bisher hab ich es so (pseudo-Code):
Java:
try {
starteSession();
aendereEtwas();
commit();
} catch (PersistenceException ex) {
// Fehlermeldung
}
Beim Commit fliegt ja nun eine Exception. Ich habe auch in diversen Tutorials gelesen, dass die Persistence-Exception eigentlich alle möglichen Exceptions beinhaltet. Dies scheint aber nicht der Fall zu sein. Denn wenn durch eine Eingabe z.B. ein Constraint in der Datenbank verletzt wird, stürzt die Anwendung trotzdem ab mit:
Code:
org.hibernate.exception.ConstraintViolationException: could not update:
....
Caused by: org.postgresql.util.PSQLException: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint
Ich muss muss diesen Fall dann so fangen:
Java:
try {
starteSession();
aendereEtwas();
commit();
} catch (PersistenceException ex) {
// Fehlermeldung
} catch (ConstraintViolationException ex) {
// Fehlermeldung
}
Diese ConstraintViolationException ist natürlich aus Hibernate und somit habe ich eine direkte Abhängigkeit von Hibernate im Code, was ich momentan nicht will.
Übersehe ich da irgendetwas, oder habe ich etwas falsch verstanden? Wenn ja, was muss ich denn alles an Exceptions fangen, damit bei einer Fehleingabe nicht gleich das Programm "abstürzt"?
Danke
Zuletzt bearbeitet: