2015-04-12 52 views
1

我正在开发一个android应用程序,并且我正在使用番石榴eventbus。 我得到关于不能派遣事件的含糊不清的错误。 我该如何调查这些问题?以及如何获得有关异常的更多信息?番石榴eventbus调度错误

这是一个样本异常消息:

04-12 20:46:35.829 9971-11208/xxx.android.init E/default﹕ Could not dispatch event: [email protected] to public void xxx.android.presentation.control.MainActivity.showToast(xxx.core.event.EventShowToast) 

PS:我更换了公司类路径前缀xxx

+0

有下面这条消息暗示为什么有可能是一个问题的任何附加的堆栈跟踪? –

+0

@AndyTurner:不幸的是,没有。这是令我困惑的事情! –

回答

1

如果订阅者抛出异常,则会发生这种情况。

您可以使用您自己的默认记录器,在构建过程中向您的EventBus提供com.google.common.eventbus.SubscriberExceptionHandler实施。

例如:

import com.google.common.eventbus.SubscriberExceptionContext; 
import com.google.common.eventbus.SubscriberExceptionHandler; 

class CustomExceptionHandler implements SubscriberExceptionHandler { 
    @Override 
    public void handleException(Throwable exception, SubscriberExceptionContext context) { 
     System.out.println("Handler '"+context.getSubscriber()+"' could not handle '"+context.getEvent().getClass().getName()+"'["+context.getEvent()+"]: " + exception.getMessage()); 
    } 
} 

而且使用这样的

EventBus eventBus = new EventBus(new CustomExceptionHandler());