private void triggerEvent(String eventName, AbstractEvent abstractEvent, GameStateData previousGameState, GameStateData currentGameState) { try { abstractEvent.trigger(previousGameState, currentGameState); } catch (Exception e) { if (faultingEventsCount.ContainsKey(eventName)) { faultingEventsCount[eventName]++; if (faultingEventsCount[eventName] > 5) { Console.WriteLine("Event " + eventName + " has failed > 5 times in this session"); } } if (!faultingEvents.ContainsKey(eventName)) { Console.WriteLine("Event " + eventName + " threw exception " + e.Message); Console.WriteLine("This is the first time this event has failed in this session"); faultingEvents.Add(eventName, e.Message); faultingEventsCount.Add(eventName, 1); } else if (faultingEvents[eventName] != e.Message) { Console.WriteLine("Event " + eventName + " threw a different exception: " + e.Message); faultingEvents[eventName] = e.Message; } } }