public void Handle()
{
try
{
try
{
TryProcessIncomingMessage();
}
catch (MessageException exception)
{
UserException?.Invoke(this, new MessageErrorEventArgs(exception));
}
catch (CommitException exception)
{
UserException?.Invoke(this, new MessageErrorEventArgs(exception));
}
catch (Exception e)
{
SystemException?.Invoke(this, new MessageErrorEventArgs(e));
//generic exceptions tend to indicate a serious problem - lets start delaying processing
//this counter will reset once a message has been processed by this thread
_seriousExceptionProcessBackOffHelper.Value.Wait();
}
}
catch (Exception ex) //not cool - one of the exception events threw an exception
{
//there isn't a whole lot we can do here
_log.ErrorException("An error has occurred while trying to handle an exception", ex, null);
}
}
/// <summary>