diff --git a/src/main/java/org/qortal/event/EventBus.java b/src/main/java/org/qortal/event/EventBus.java index 09496d11..6114c2c6 100644 --- a/src/main/java/org/qortal/event/EventBus.java +++ b/src/main/java/org/qortal/event/EventBus.java @@ -3,9 +3,14 @@ package org.qortal.event; import java.util.ArrayList; import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + public enum EventBus { INSTANCE; + private static final Logger LOGGER = LogManager.getLogger(EventBus.class); + private static final List LISTENERS = new ArrayList<>(); public void addListener(Listener newListener) { @@ -50,6 +55,11 @@ public enum EventBus { } for (Listener listener : clonedListeners) - listener.listen(event); + try { + listener.listen(event); + } catch (Exception e) { + // We don't want one listener to break other listeners, or caller + LOGGER.warn(() -> String.format("Caught %s from a listener processing %s", e.getClass().getSimpleName(), event.getClass().getSimpleName()), e); + } } }