diff options
author | ByteHamster <info@bytehamster.com> | 2019-09-02 00:19:56 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2019-09-02 00:19:56 +0200 |
commit | 7cc5f86979c9345a67670745374fdd0deca4613d (patch) | |
tree | 29624fd220d05b6d7dc0211bb8d0dcd03c632eee /core/src/main/java | |
parent | a08105df2b12e6a3dc923d524088c9df86321650 (diff) | |
download | AntennaPod-7cc5f86979c9345a67670745374fdd0deca4613d.zip |
Do not crash when cancelling gpodder podcast loading
Diffstat (limited to 'core/src/main/java')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/exception/RxJavaErrorHandlerSetup.java | 12 |
1 files changed, 9 insertions, 3 deletions
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); }); } } |