1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.ObservableSource; import io.reactivex.rxjava3.functions.BiPredicate; import io.reactivex.rxjava3.functions.Consumer; import io.reactivex.rxjava3.functions.Function; import io.reactivex.rxjava3.functions.Predicate; import io.reactivex.rxjava3.functions.Supplier; public class Main6 { // java项目 public static void main(String[] args) { Observable.just("http://www.baidu.com/") .map(new Function<String, Integer>() { @Override public @NonNull Integer apply(@NonNull String t) throws Throwable { int len = t.length(); if(len < 26){ System.err.println("抛出错误 "); // create方法时,使用发射器onError... throw new RuntimeException("有点错误"); } return len; } }) // .onErrorReturn(new Function<Throwable, Integer>() { // @Override // public @NonNull Integer apply(@NonNull Throwable t) throws Throwable { // System.err.println("1拦截错误 " + t); // return 9; // 直接前往下游订阅者 // } // }) // .onErrorResumeNext(new Function<Throwable,ObservableSource<Integer>>() { // // 如果使用了onErrorReturn处理,则onErrorResumeNext被忽略 // @Override // public @NonNull ObservableSource<Integer> apply(@NonNull Throwable t) throws Throwable { // System.err.println("2拦截错误 " + t); // return Observable.just(5555); // 直接前往下游订阅者 // } // }) // .retry(3) // 按次数重试。无手动干预 // .retry(new Predicate) // 重试。无自动计数 // .retry(3, new Predicate<Throwable>(){ // 重试3次 // @Override // public boolean test(Throwable t) throws Throwable { // System.err.println("重试3次,error:" + t); // return true; // 必须true才去重试 // } // }) .retry(new BiPredicate<Integer, Throwable>() { // 重试。有自动计数 // 如果使用了onErrorReturn或onErrorReturn处理,则retry被忽略 @Override public boolean test(@NonNull Integer times, @NonNull Throwable t2) throws Throwable { System.err.println("重试次数 " + times + ",error:" + t2); if(times > 3){ return false; // 停止重试,继续抛出异常 } return true; // 回到上游重新开始 } }) .subscribe(new Consumer<Integer>() { @Override public void accept(@NonNull Integer t) throws Throwable { System.err.println("下游 " + t); // onErrorReturn或onErrorReturn时打印其return的数值 } }); } } |
- end
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/3998.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设