Qual è la migliore pratica per la gestione delle eccezioni generate da gestori di eventi / ascoltatori in un ciclo di eventi? Ad esempio:
class EventLoop
{
public:
void start(); //create a thread which calls run();
void run()
{
while(true)
{
listener.waitEvent(); //blocks until an event occured
try
{
listener.processEvent(); //calls given handler
}
catch(const Exception& excp)
{
//The exception is thrown from another class
//What shall I do?
}
}
}
//other code..
}
//Sample event loop usage:
EventLoop el;
SampleListener sampleListener;
el.setListener(sampleListener);
el.start();
//other work..
In questo esempio, quando processEvent()
genera un'eccezione, il thread del ciclo di eventi dovrebbe essere in grado di continuare a essere eseguito. Inoltre, l'errore dovrebbe essere gestito. Una possibile soluzione potrebbe essere aggiungere un metodo errorOccured () al listener. Nel blocco catch il metodo potrebbe essere invocato.
Ma aumenta seriamente la complessità del programma.
I tuoi suggerimenti? Grazie ..