Merge pull request 'Transparently Propagate Event Handler Errors' (#14) from b/error-passthrough into develop

Reviewed-on: https://git.kske.dev/kske/event-bus/pulls/14
Reviewed-by: delvh <leon@kske.dev>
Reviewed-by: DieGurke <maxi@kske.dev>
This commit is contained in:
Kai S. K. Engelbart 2021-03-16 08:17:41 +01:00
commit 52719d22d4
Signed by: Käfer & Engelbart Git
GPG Key ID: 70F2F9206EDC1FCE

View File

@ -67,7 +67,7 @@ public final class EventBus {
* @throws EventBusException if an event handler isn't accessible or has an invalid signature
* @since 0.0.1
*/
public void dispatch(Object event) {
public void dispatch(Object event) throws EventBusException {
Objects.requireNonNull(event);
logger.log(Level.INFO, "Dispatching event {0}", event);
@ -90,6 +90,10 @@ public final class EventBus {
// Warn about system event not being handled
logger.log(Level.WARNING, event + " not handled due to exception", e);
else if (e.getCause() instanceof Error)
// Transparently pass error to the caller
throw (Error) e.getCause();
else
// Dispatch exception event