Je voudrais obtenir un deuxième avis sur la façon de gérer les exceptions dans les "événements" (entrée de touche, mise à jour de l'écran, etc.). Dans ce cas, j'ai le contrôle sur l'expéditeur de l'événement.Java Gestion des exceptions dans les "événements"
Ainsi, un module est réglé pour gérer un événement (il implémente une interface d'écoute, et est inscrit contre un émetteur d'événement):
public void DefaultSet (CardData oldDefault, CardData newDefault)
{
}
L'expéditeur de l'événement est tout simplement:
for (Enumeration e = listeners.elements(); e.hasMoreElements();)
{
RetrieverListener thisListener = (RetrieverListener) e.nextElement();
thisListener.DefaultSet(oldDefault, newDefault);
}
Alors si/quand quelque chose ne va pas dans le récepteur:
Dois-je essayer de faire face à l'exception de la re, et ne jamais jeter quelque chose à l'expéditeur? Parfois, les auditeurs n'ont pas le "contexte" pour gérer correctement une erreur, n'est-ce pas?
Est-il mal vu de renvoyer une exception à un module d'envoi d'événement, pour qu'il soit traité de manière documentée? par exemple. "Lancer une IOException entraînera une réinitialisation ..". Cela semble non standard des javadocs que j'ai lus. Dois-je simplement me connecter et ignorer l'exception en cas de problème & Rien ne peut être fait à ce sujet?
Architecture intéressante et réponse utile, merci! Je suppose que mon problème est que les écouteurs ne sont pas toujours prêts à afficher des choses, ou à fournir des commentaires utilisateurs, en utilisant des événements biaisant l'analogie de la pile descendante qui rend les exceptions si puissantes (gérer l'exception à un point approprié de la pile) , où quelque chose peut être fait). De toute façon je pense que les auditeurs devront faire face à l'erreur, d'une manière ou d'une autre. –
Vous devez concevoir le système pour que les auditeurs puissent gérer l'erreur. Une exception déroulera la pile à l'écouteur. L'écouteur a été appelé par quelque chose qui ne sait pas comment réagir à l'exception - un bouton appelé sur le thread de distribution d'événement Swing, ou le thread de remise de message d'un fournisseur JMS, par exemple. Vous devez instancier l'écouteur à un endroit et à un moment où vous pouvez lui donner tout le contexte dont il a besoin pour réagir à l'exception de manière sensée. – Nat