Vorrei ricevere un secondo parere su come gestire le eccezioni all'interno di "eventi" (inserimento chiave, aggiornamento schermo ecc.). In questo caso ho il controllo sul mittente dell'evento.Gestione delle eccezioni Java all'interno di "eventi"
Quindi un modulo è impostato per gestire un evento (che implementa un'interfaccia ascoltatore, ed è registrato nei confronti di un mittente evento):
public void DefaultSet (CardData oldDefault, CardData newDefault)
{
}
Il mittente evento è semplicemente:
for (Enumeration e = listeners.elements(); e.hasMoreElements();)
{
RetrieverListener thisListener = (RetrieverListener) e.nextElement();
thisListener.DefaultSet(oldDefault, newDefault);
}
Così se/quando qualcosa va storto nel ricevitore:
Se dovessi provare ad affrontare l'eccezione il re, e non restituire mai nulla al mittente? A volte gli ascoltatori non hanno il "contesto" per gestire correttamente un errore, giusto?
È corrugato per restituire un'eccezione a un modulo di invio eventi, da gestire in modo documentato? per esempio. "Lanciare una IOException comporterà un reset ..". Questo sembra non standard dalle javadoc che ho letto.
Devo solo accedere e ignorare l'eccezione quando qualcosa va storto & non si può fare nulla al riguardo?
Architettura interessante e risposta utile, grazie! Credo che il mio problema sia che gli ascoltatori non sono sempre orientati a mostrare cose, o fornire feedback da parte degli utenti, l'uso degli eventi distorce l'analogia top-down stack che rende Eccezioni così potenti (gestire l'eccezione in un punto appropriato nello stack , dove si può fare qualcosa). In ogni caso penso che gli ascoltatori dovranno affrontare l'errore, in un modo o nell'altro. –
Devi progettare il sistema per rendere gli ascoltatori in grado di gestire l'errore. Un'eccezione restituirà lo stack all'ascoltatore. Il listener è stato invocato da qualcosa che non può sapere come reagire all'eccezione, ad esempio un pulsante chiamato sul thread di invio dell'evento Swing o il thread di consegna del messaggio di un provider JMS. Devi istanziare l'ascoltatore in un luogo e in un momento in cui puoi dare tutto il contesto di cui ha bisogno per reagire all'eccezione in modo ragionevole. – Nat