gpt4 book ai didi

java - RxJava 全局处理程序和 Android Vitals

转载 作者:行者123 更新时间:2023-12-02 01:28:18 24 4
gpt4 key购买 nike

我对 RxJava 全局处理程序和 Android Vitals 有疑问。在 Android Vitals 中我可以看到

io.reactivex.exceptions.UndeliverableException

Caused by: java.lang.InterruptedException: at com.google.common.util.concurrent.AbstractFuture.get (AbstractFuture.java:527) at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get (FluentFuture.java:82)

但是我已经不知道问题出在哪里,所以我考虑添加 RxJava 全局错误处理程序:

RxJavaPlugins.setErrorHandler(e -> {
if (e instanceof UndeliverableException) {
e = e.getCause();
}
if ((e instanceof IOException) || (e instanceof SocketException)) {
// fine, irrelevant network problem or API that throws on cancellation
return;
}
if (e instanceof InterruptedException) {
// fine, some blocking code was interrupted by a dispose call
return;
}
if ((e instanceof NullPointerException) || (e instanceof IllegalArgumentException)) {
// that's likely a bug in the application
Thread.currentThread().getUncaughtExceptionHandler()
.handleException(Thread.currentThread(), e);
return;
}
if (e instanceof IllegalStateException) {
// that's a bug in RxJava or in a custom operator
Thread.currentThread().getUncaughtExceptionHandler()
.handleException(Thread.currentThread(), e);
return;
}
Log.warning("Undeliverable exception received, not sure what to do", e);
});

这是我的问题。如果我添加全局错误处理程序,我会丢失 Android Vitals 的报告吗?我所说的丢失是指不会有新的报告,因为我们将处理导致崩溃的错误。

是否可以添加全局错误处理程序并仍然在 Android Vitals 中获取报告?

最佳答案

您的目标应该是减少崩溃。因此,只要您能够正确处理异常,就应该这样做。

当异常无法传递给观察者时,通常会弹出UndeliverableException。这可能是当 Subject 没有观察者时的情况。

通常您可以轻松地修复这些问题。或者您可以忽略它并重新抛出任何其他错误。

RxJavaPlugins.setErrorHandler(e -> {
if (e instanceof UndeliverableException) {
return;
}
throw e;
});

也许还可以记录问题以了解它。

关于java - RxJava 全局处理程序和 Android Vitals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57568723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com