Me gustaría obtener una segunda opinión sobre cómo manejar excepciones dentro de "eventos" (entrada de clave, actualización de pantalla, etc.). En este caso, tengo control sobre el evento-emisor.Manejo de excepciones Java dentro de "eventos"
Así que un módulo está configurado para manejar un evento (que implementa una interfaz de escucha, y se ha registrado en contra de un emisor del evento):
public void DefaultSet (CardData oldDefault, CardData newDefault)
{
}
El emisor del evento es simplemente:
for (Enumeration e = listeners.elements(); e.hasMoreElements();)
{
RetrieverListener thisListener = (RetrieverListener) e.nextElement();
thisListener.DefaultSet(oldDefault, newDefault);
}
Así si/cuando algo sale mal en el receptor:
Debo tratar de hacer frente a la excepción del re, y nunca arrojar nada de nuevo al remitente? A veces los oyentes no tienen el "contexto" para manejar un error correctamente, ¿es así?
¿Está mal visto lanzar una excepción a un módulo de envío de eventos, que se manejará de manera documentada? p.ej. "Lanzar una IOException dará como resultado un reinicio ...". Esto parece no estándar de los javadocs que he leído.
¿Debo iniciar sesión e ignorar la excepción cuando algo va mal & no se puede hacer nada al respecto?
Arquitectura interesante y respuesta útil, gracias! Supongo que mi problema es que los oyentes no siempre están preparados para mostrar cosas o proporcionar comentarios al usuario, el uso de eventos realmente sesga la analogía de la pila descendente que hace que las Excepciones sean tan potentes (maneje la excepción en un punto apropiado en la pila , donde se puede hacer algo). De todos modos, creo que los oyentes tendrán que lidiar con el error, de una forma u otra. –
Debe diseñar el sistema para que los oyentes puedan manejar el error. Una excepción desenrollará la pila nuevamente al oyente. El oyente ha sido invocado por algo que no puede saber cómo reaccionar a la excepción, por ejemplo, un botón llamado en el hilo de envío del evento Swing o el hilo de envío de mensajes de un proveedor JMS. Debe instanciar al oyente en un lugar y momento en el que puede darle todo el contexto que necesita para reaccionar a la excepción de una manera sensata. – Nat