Gérer les exceptions de la base de données
Bonjour,
J'aimerais savoir comment gérer au mieux les erreurs provenant de la BD. J'utilise JPA pour les interactions avec la BD.
En effet, lorsque je veux supprimer une ligne ayant une FK sur une autre table, j'obtiens une erreur de contrainte du genre, que j'aimerais intercepter et ainsi mettre un message à l'utilisateur :
Citation:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: L'instruction DELETE est en conflit avec la contrainte REFERENCE "FK8B2553321AA62CC". Le conflit s'est produit dans la base de données "TEST_DB", table "dbo.GL_DEPARTEMENT", column 'GL_SOCIETE_ID'.
Dans mon code, j'ai bien un bloc try-catch mais rien ne s'y passe, c'est comme si je ne voulais pas intercepter le bon type d'erreur
Voici la méthode de suppression de mon ManagedBean :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public void supprimerSociete() {
try {
m_societeService.deleteSociete(getSelectedSociete());
FacesContext.getCurrentInstance().addMessage(
null,
Messages.getMessage("LaSocieteAEteSupprimeeAvecSucces",
FacesMessage.SEVERITY_INFO, null));
} catch (DAOException e) {
FacesContext.getCurrentInstance().addMessage(
null,
Messages.getMessage("ImpossibleDeSupprimerLaSociete",
FacesMessage.SEVERITY_INFO, null));
}
} |
Et la méthode de mon service :
Code:
1 2 3 4 5 6 7 8 9
|
@Override
public void deleteSociete(Societe societe) throws DAOException {
try {
m_em.remove(m_em.merge(societe));
} catch (Exception e) {
throw new DAOException("fddc");
}
} |
De plus, j'aimerais, si possible, pouvoir "identifier" l'erreur et ainsi informer au mieux l'utilisateur pour qu'il sache la raison du problème (lien avec une FK, .....)
Qqun saurait-il me renseigner ?
Merci d'avance pour votre aide