Meilleure gestion des exceptions dans l'APP
J'ai utilisé EJB3/JPA lors de la persistance mes entités et je suis heureux sur la façon dont il est en mesure de gérer mon DB liées
de la tâche.
Mon seul souci est la gestion des exceptions. Mon exemple de code lors de l'enregistrement de l'entité vient toujours dans cette saveur.
La plupart des tutos que j'ai lu sur le net vient de cette saveur aussi avec aucune quant à la gestion des exceptions.
@Stateless
public class StudentFacade{
@PersistenceContext(unitName = "MyDBPU")
private EntityManager em;
public void save(Student student) {
em.persist(student);
}
}
Mais je ne sais pas quel est le meilleur moyen de la gestion des exceptions dans un EJB application?
Quel devrait être le meilleur moyen lors de la manipulation d'exception?
Est-ce que les autres est de la manipulation de l'exception? Un bloc try catch sur votre session de façade?
@Stateless
public class StudentFacade{
@PersistenceContext(unitName = "MyDBPU")
private EntityManager em;
public void save(Student student) {
try {
em.persist(student);
} catch(Exception e) {
//log it or do something
}
}
}
ou de laisser la méthode lève une exception?
public void save(Student student) throws Exception {
em.persist(student);
}
Je ne sais pas si ma compréhension est correcte, car je suis toujours en apprentissage EJB.
Grâce
source d'informationauteur Mark Estrada
Vous devez vous connecter pour publier un commentaire.
L'idée de la gestion des exceptions est en train de faire un peu de logique en un seul point, en cas de défaillance.
Le try catch seront utilisés lors de la finale du point où vous avez besoin pour gérer exception ou vous avez besoin de convertir une exception à une autre exception
Dire que votre application a de nombreuses couches, à savoir de l'Action, de façades, de Persister
Délégué exception
Dans ce cas, une exception est levée sur la Façade peut être jeté à l'action ci-dessus de la couche.
Dans l'action l'exception particulière sera pris et manipulé avec le message d'erreur approprié.
La conversion d'Exception Générale à l'Application de l'exception
Dire la persistance que vous obtenez et DBException comme sqlException. Cette exception ne devrait pas être envoyer en tant que tels à l'Action ou de la Façade de la couche, de sorte que nous attraper l'exception particulière, puis lancer une nouvelle exception (une exception défini par l'utilisateur pour l'application)
Dans l'action de la Couche de
Vous pourrez prendre vos exception dans l'action et de gérer exception
Si vous voulez vous la méthode pour lancer l'exception obtenu à partir de l'em.persistance(...), alors il ne faut pas entourer cette affirmation que le bloc try/catch (cause qui va attraper que chaque exception du bloc).
La façon dont vous vous approchez de ce problème dépend de l'application, s'il existe déjà un code existant ou pas. Dans le cas où il y a du code legacy, je vous suggère d'utiliser la même approche (même dans certains cas, ce n'est pas la vitesse optimale) afin de maintenir la cohérence.
Sinon, je vous conseille d'exceptions suivantes' "règle du pouce", ils devraient être traités dans le premier endroit où vous avez toutes les informations dont vous avez besoin pour prendre une action, sinon de les jeter si quelqu'un d'autre peut gérer. (Si vous les jeter, assurez-vous de jeter le plus spécifique de la forme de l'exception que vous pourrait jeter (pas de l'Exception générale)). La gestion des exceptions lors de l'utilisation de JPA est pas différente de la manipulation de Java exceptions en général.
J'espère que cela a été assez simple d'informations sur les exceptions sans lancer un "dialogue religieux".
Si votre combinaison est ejb avec jpa, puis tous jpa exceptions sont des exceptions d'exécution.
ejb 2 types d'exceptions 1) Exception d'Application 2) Système d'Exception
Application des Exceptions vérifiées exceptions, fondamentalement, nous sommes à l'aide de la validation commerciale et des règles d'affaires.
Système Exceptions sont des exceptions d'exécution, de sorte que si tout runtime excpetion dans les parages du conteneur d'ejb va intervenir et de convertir l'exception d'exécution à distance d'exception.
Par ex:
dans dao couche
Tous jpa exceptions sont des exceptions d'exécution seulement.
dans l'ejb de la couche de service:
dans l'ejb de la couche de si une exception d'exécution dans les parages, ejb conteneur d'interférer et de convertir en distance exception.
Dans la couche d'interface:
de sorte que de cette jpa --> ejb --> interface