2017-08-31 86 views
1

我們需要一個全局處理程序rxJava2異常傳遞給任何訂閱者的onError,只記錄在系統的任何部分發生的棧跟蹤。
第一個版本的rxJava是一個RxJavaHooks.setOnError方法,正是這個事情。如何記錄rxJava2的所有異常的堆棧跟蹤?

RxJavaHooks.setOnError(throwable -> Log.w(TAG, "rx error", throwable)); 

但在rxJava2移除該類和他們注意到的邏輯已經被轉移到RxJavaPlugins類。它有一些類似的命名方法RxJavaPlugins.setErrorHandler,但實際上調用的目的是完全不同的。它僅處理無法投遞的異常。 我如何記錄所有異常,或者是否由用戶捕獲?
我真的不希望記錄器連接到每一個具體的可觀測系統
UPD:也許你只對Android系統有一些意見

回答

1

有這樣做的沒有簡單的方法;您必須安裝onSubscribeonAssembly掛鉤到所有主要反應類型,然後以不會干擾內部優化意外的方式包裝Subscriber

的擴展項目有一個assembly tracking debug feature捕捉時流組裝當前線程的堆棧跟蹤並附加在onError例外穿過它(你實際上需要)的信息。

+0

感謝您的指點,我會檢查它 – Beloo