2015-04-12 75 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());