Skip to content

Commit f2279cb

Browse files
committed
Add Thread parameter for EventUncaughtExceptionHandler;
1 parent 2c24e2a commit f2279cb

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/main/java/net/lamgc/utils/event/EventExecutor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public EventExecutor(ThreadPoolExecutor threadPoolExecutor,
5050
if(e instanceof EventInvokeException && eventExceptionHandler != null){
5151
EventInvokeException exception = (EventInvokeException) e;
5252
eventExceptionHandler.exceptionHandler(
53+
/* Thread: */ t,
5354
exception.getHandler(),
5455
exception.getHandlerMethod(),
5556
exception.getEventObject(),
@@ -215,12 +216,13 @@ public interface EventUncaughtExceptionHandler{
215216

216217
/**
217218
* 当事件对象抛出异常时触发.
219+
* @param executeThread 执行事件方法的线程对象
218220
* @param handler 事件处理方法所在{@link EventHandler}
219221
* @param handlerMethod 抛出异常的方法对象
220222
* @param event 事件对象
221223
* @param cause 异常对象
222224
*/
223-
void exceptionHandler(EventHandler handler, Method handlerMethod, EventObject event, Throwable cause);
225+
void exceptionHandler(Thread executeThread, EventHandler handler, Method handlerMethod, EventObject event, Throwable cause);
224226
}
225227

226228

src/test/java/net/lamgc/utils/event/EventExecutorTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package net.lamgc.utils.event;
22

3+
import org.junit.Assert;
34
import org.junit.Test;
45

56
import java.util.concurrent.ArrayBlockingQueue;
67
import java.util.concurrent.ThreadPoolExecutor;
78
import java.util.concurrent.TimeUnit;
9+
import java.util.concurrent.atomic.AtomicBoolean;
810

911
public class EventExecutorTest {
1012

@@ -55,16 +57,23 @@ public void caughtExceptionTest() throws IllegalAccessException, InterruptedExce
5557
});
5658
EventExecutor executor = new EventExecutor(threadPoolExecutor);
5759

58-
executor.setEventUncaughtExceptionHandler((handler, handlerMethod, event, cause) -> {
59-
System.out.println("Handler: " + handler.toString() + ", MethodName: " + handlerMethod.getName() +
60-
", Event: " + event.getClass().getSimpleName() + " throw Exception: " + cause.getMessage());
60+
AtomicBoolean handlerException = new AtomicBoolean(false);
61+
executor.setEventUncaughtExceptionHandler((t, handler, handlerMethod, event, cause) -> {
62+
System.out.println(
63+
"Thread: [" + t.getId() + "] " + t.getName() +
64+
", Handler: " + handler.toString() +
65+
", MethodName: " + handlerMethod.getName() +
66+
", Event: " + event.getClass().getSimpleName() +
67+
" throw Exception: " + cause.getMessage());
6168
cause.printStackTrace();
69+
handlerException.set(true);
6270
});
6371

6472
SimpleEventHandler handler = new SimpleEventHandler("handler1");
6573
executor.addHandler(handler);
6674
executor.executor(new ExceptionThrowEvent(new NullPointerException()));
6775
Thread.sleep(1000L);
76+
Assert.assertTrue(handlerException.get());
6877
}
6978

7079
}

0 commit comments

Comments
 (0)