android - 带有错误处理的 RxAndroid Observable 方法调用

标签 android exception rx-java rx-android

我是 RxAndroid 的新手,我仍在努力摆脱我所犯的错误。

Observable.just(RandomComputeManager.getChartData(0,"abcd",new Date()))
                .subscribeOn(Schedulers.computation())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(s -> {
                    System.out.println("RXANDROID"+ s.getFood());
                    Toast.makeText(getActivity(),"HELLO"+s.getFood(),Toast.LENGTH_LONG);
                });

我这里有一个繁重的计算方法,我试图在 RxJava 的 Schedulers.computation() 线程上运行。(我不知道只在 Observable.just 中调用它是否是正确的方法)。如果该方法没有数据,则应该抛出异常。

Class RandomComputeManager{
public static getPieChartData(int a,String b,Date c) throws CustomException {
   if(haveData){
             //All Okay
               }
   else{
       throw new CustomException("No Data");
       }

}

构建失败并出现错误

错误:未报告的异常 CustomException;必须被捕获或声明被抛出

我曾尝试向订阅方法添加一个观察者,认为它有一个 onError 方法,但既不能解决这个问题,也不能获取我的数据,因为被调用方法的返回值有些歧义(Don '知道它应该是一个可观察的对象还是我需要的对象)。 请建议一种处理此问题的方法。

最佳答案

订阅者函数可以接受另一个 throwable 参数。

请这样做

Observable.just(RandomComputeManager.getChartData(0,"abcd",new Date()))
            .subscribeOn(Schedulers.computation())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(s -> {
                System.out.println("RXANDROID"+ s.getFood());
                Toast.makeText(getActivity(),"HELLO"+s.getFood(),Toast.LENGTH_LONG);
            }, throwable ->{

});

关于android - 带有错误处理的 RxAndroid Observable 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891522/

相关文章:

java - Roboguice 正在注入(inject)不同的上下文

java - 使用递归将二叉搜索 TreeMap 存储到数组中并打印出来

java - RxJava withLatestFrom 不工作

android - 为Android生成二维码图片

android - 在 Android Studio 中包含非静态库项目?

java - Spring Boot - 自定义异常处理程序

rx-java - 项目reactor中是否有相当于RxJava Completable的东西?

java-8 - 仅返回从 Observable 发出的项目

android - fragment 中未调用 onAttach()

http - j2me : Error opening stream - "java.io.IOException: -7334"