forked from Qortal/qortal
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.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<Listener> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user