From 7cc5f86979c9345a67670745374fdd0deca4613d Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 2 Sep 2019 00:19:56 +0200 Subject: Do not crash when cancelling gpodder podcast loading --- .../core/util/exception/RxJavaErrorHandlerSetup.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java b/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java index f34ca75be..12f0c1c6e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.core.util.exception; import android.util.Log; +import de.danoeh.antennapod.core.gpoddernet.GpodnetServiceException; import io.reactivex.exceptions.UndeliverableException; import io.reactivex.plugins.RxJavaPlugins; @@ -13,16 +14,21 @@ public class RxJavaErrorHandlerSetup { } public static void setupRxJavaErrorHandler() { - RxJavaPlugins.setErrorHandler(e -> { + RxJavaPlugins.setErrorHandler(originalCause -> { + Throwable e = originalCause; if (e instanceof UndeliverableException) { e = e.getCause(); } + if (e instanceof GpodnetServiceException) { + e = e.getCause(); + } if (e instanceof InterruptedException || e instanceof InterruptedIOException) { // fine, some blocking code was interrupted by a dispose call - Log.d("RxJavaErrorHandler", "Ignored exception: " + Log.getStackTraceString(e)); + Log.d("RxJavaErrorHandler", "Ignored exception: " + Log.getStackTraceString(originalCause)); return; } - Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e); + Thread.currentThread().getUncaughtExceptionHandler() + .uncaughtException(Thread.currentThread(), originalCause); }); } } -- cgit v1.2.3