Encontrar falta onError en el proyecto

Estoy tratando de localizar una falta onError() en un proyecto. Significa que la aplicación se bloquea porque una suscripción no maneja los objetos desechables así que quiero localizar esa subcripción y agregar el método onError.

Desafortunadamente el stacktrace no es realmente útil aquí y solo muestra la línea del throw new IOException pero nada más:

  FATAL EXCEPTION: main Process: my.app.example.dev, PID: 20309 java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread. at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:54) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: rx.exceptions.OnErrorFailedException: Error occurred when trying to propagate error to Observer.onError at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:201) at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:111) at rx.android.app.OperatorConditionalBinding$1.onError(OperatorConditionalBinding.java:69) at rx.internal.operators.NotificationLite.accept(NotificationLite.java:147) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:177) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.access$000(OperatorObserveOn.java:65) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:153) at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)            at android.os.Handler.handleCallback(Handler.java:739)            at android.os.Handler.dispatchMessage(Handler.java:95)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5221)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: rx.exceptions.CompositeException: 2 exceptions occurred.            at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:201)            at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:111)            at rx.android.app.OperatorConditionalBinding$1.onError(OperatorConditionalBinding.java:69)            at rx.internal.operators.NotificationLite.accept(NotificationLite.java:147)            at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:177)            at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.access$000(OperatorObserveOn.java:65)            at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:153)            at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)            at android.os.Handler.handleCallback(Handler.java:739)            at android.os.Handler.dispatchMessage(Handler.java:95)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5221)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: rx.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received => at com.splunk.mint.ExceptionHandler.uncaughtException(ExceptionHandler.java:42) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:58)            at android.os.Handler.handleCallback(Handler.java:739)            at android.os.Handler.dispatchMessage(Handler.java:95)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5221)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: retrofit.RetrofitError: java.io.IOException: No connectivity at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:385) at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:221) at retrofit.RestAdapter$RestHandler$1.call(RestAdapter.java:271) at retrofit.RestAdapter$RestHandler$1.call(RestAdapter.java:269) at retrofit.RxSupport$2.run(RxSupport.java:46) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) Caused by: java.io.IOException: No connectivity at my.app.example.manager.ApiManager$NetworkAwareOKClient.execute(ApiManager.java:1071) at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:322)            at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:221)            at retrofit.RestAdapter$RestHandler$1.call(RestAdapter.java:271)            at retrofit.RestAdapter$RestHandler$1.call(RestAdapter.java:269)            at retrofit.RxSupport$2.run(RxSupport.java:46)            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)            at java.util.concurrent.FutureTask.run(FutureTask.java:237)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)            at java.lang.Thread.run(Thread.java:818) 

¿Alguna idea para localizar la suscripción (línea en código) que no tiene el onError() ?

Esto puede ser un dolor para depurar. Curiosamente tuve un error dentro de la Action1<Throwable> [facepalm].

Lo mejor era depurar esto es registrar un manejador de errores global. Esto le vio la verdad en su código:

 RxJavaPlugins.getInstance().registerErrorHandler(new RxJavaErrorHandler() { @Override public void handleError(Throwable e) { Log.w("Error",e); } }); 

Una discusión sobre github: https://github.com/ReactiveX/RxJava/issues/2293

Si el onError no está implementado, RxJava lanzará una excepción OnErrorNotImplementedException . Parece que RxJava no ha llamado al método onError ("Error al intentar propagar el error a Observer.onError")

Puede intentar registrar un manejador de errores para encontrar la excepción raíz.

 static { RxJavaPlugins.getInstance().registerErrorHandler(new RxJavaErrorHandler() { @Override public void handleError(Throwable e) { e.printStackTrace(); } }); } 
  • RxJava HashMap Transformación
  • ¿Cómo rebatir una solicitud reactiva retrofit en java?
  • Android: Sondeo de un servidor con Retrofit
  • ¿Por qué Retrofit se utiliza con RxJava
  • Excepción de interrupción de subproceso en modo Multi-ventana
  • Solución global de errorHandling con RxJava sólo cuando onError no está implementado
  • Cómo manejar el error auth0 403 sin agregar código específico en todas partes (Retrofit / okhttp / RxAndroid)
  • Encadenamiento de servicios de Retrofit con soporte de RxJava
  • Encadenamiento de dos llamadas de servicio web mediante RxJava y Retrofit
  • ¿Cómo actualizar observable en RxJava?
  • Manejar paginación con RxJava
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.