mirror of
https://github.com/Qortal/qortal.git
synced 2025-05-28 20:26:59 +00:00
Add defensive code to EventBus to catch unexpected exceptions
This commit is contained in:
parent
8707f154ee
commit
acc616c204
@ -3,9 +3,14 @@ package org.qortal.event;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
public enum EventBus {
|
public enum EventBus {
|
||||||
INSTANCE;
|
INSTANCE;
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger(EventBus.class);
|
||||||
|
|
||||||
private static final List<Listener> LISTENERS = new ArrayList<>();
|
private static final List<Listener> LISTENERS = new ArrayList<>();
|
||||||
|
|
||||||
public void addListener(Listener newListener) {
|
public void addListener(Listener newListener) {
|
||||||
@ -50,6 +55,11 @@ public enum EventBus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Listener listener : clonedListeners)
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user