summaryrefslogtreecommitdiff
path: root/core/src/main/java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-09-02 00:19:56 +0200
committerByteHamster <info@bytehamster.com>2019-09-02 00:19:56 +0200
commit7cc5f86979c9345a67670745374fdd0deca4613d (patch)
tree29624fd220d05b6d7dc0211bb8d0dcd03c632eee /core/src/main/java
parenta08105df2b12e6a3dc923d524088c9df86321650 (diff)
downloadAntennaPod-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.java12
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);
});
}
}