From 6eebd3c121b0b8fb93cb12e5aec66756ab578451 Mon Sep 17 00:00:00 2001 From: kske Date: Wed, 7 Jul 2021 22:06:07 +0200 Subject: [PATCH] Pass errors caused during system event dispatch to caller When an error is caused during the dispatch of a system event, a warning has been logged instead instead of rethrowing the error. This has been fixed. This enables failing a JUnit test when an exception event handler is invoked. --- .../src/main/java/dev/kske/eventbus/core/EventBus.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/event-bus-core/src/main/java/dev/kske/eventbus/core/EventBus.java b/event-bus-core/src/main/java/dev/kske/eventbus/core/EventBus.java index 45c9ef8..2711e5d 100644 --- a/event-bus-core/src/main/java/dev/kske/eventbus/core/EventBus.java +++ b/event-bus-core/src/main/java/dev/kske/eventbus/core/EventBus.java @@ -94,14 +94,14 @@ public final class EventBus { try { handlers.next().execute(event); } catch (InvocationTargetException e) { - if (event instanceof DeadEvent || event instanceof ExceptionEvent) - - // Warn about system event not being handled - logger.log(Level.WARNING, event + " not handled due to exception", e); - else if (e.getCause() instanceof Error) + if (e.getCause() instanceof Error) // Transparently pass error to the caller throw (Error) e.getCause(); + else if (event instanceof DeadEvent || event instanceof ExceptionEvent) + + // Warn about system event not being handled + logger.log(Level.WARNING, event + " not handled due to exception", e); else // Dispatch exception event