有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 2+RxJava2全局处理错误

如何使用Reformation2和rxjava2检查网络连接以及服务器是否可用于所有请求

我可以通过向我的服务器url发送请求来检查“服务器可用”,但我可以通过向谷歌发送请求来检查网络连接。com或其他“好”网站

我有更多的api请求,例如:

compositeDisposable.add(RetrofitClient
            .getApi()
            .somemethod()
            .map(response -> {
                Data data = null;
                if (response.isSuccessful()) {
                    data = response.body();
                } else {
                    data = new Data();
                    data.setResponseCode(response.code())
                }
                return data;
            })
            .onErrorReturnItem(new Data())
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::checkResponse());

如何为所有请求检查我编写的这些错误,以避免代码重复?谢谢


共 (2) 个答案

  1. # 1 楼答案

    您可以使用lift方法,它允许您为您的案例^{}实现自己的操作符

    并按如下方式使用:

    @Override
      public @NonNull Observable<List<Category>> fetchCategories() {
        return this.service
          .categories()
          .lift(apiErrorOperator())
          .map(CategoriesEnvelope::categories)
          .subscribeOn(Schedulers.io());
      }
    
  2. # 2 楼答案

    在应用程序类的onCreate中调用RxJavaPlugins.setErrorHandler。例如:

        RxJavaPlugins.setErrorHandler(e -> {
            if ((e instanceof IOException) || (e instanceof SocketException)) {
                // handle exception
                return;
            }
        });