public void publish(Event event) {
eventBus.post(event);
if(threadLocalException != null) {
Store threadLocalException in some variable say e
Clear threadLocalException variable
throw e;
}
}
订阅服务器需要包装在一个类中,才能在线程局部变量中设置异常
public abstract class EventSubscriber<T extends Event> {
@Subscribe
public void invoke(T event) {
try {
handle(event);
} catch (Exception e) {
Set thread local variable to e
}
}
protected abstract void handle(T event);
}
# 1 楼答案
我在发布服务器和订阅服务器上使用
java.lang.ThreadLocal
变量解决了这个问题Publisher需要封装在一个类中,该类读取线程本地异常并将其抛出
订阅服务器需要包装在一个类中,才能在线程局部变量中设置异常