thy*_*all 7 java android rx-java rx-android
我刚刚开始使用RxJava,但也许还没有点击.
1.
Integer[] items = {1, 2, 3, 0, 0, 4, 5, 6, 1};
Observable.from(items)
.map(this::invert)
.subscribe(i -> Log.d(LOG_TAG, "Inverted: " + i), t -> Log.d(LOG_TAG, "Error: " + t.getMessage()));
Run Code Online (Sandbox Code Playgroud)
2.
Integer[] items = {1, 2, 3, 0, 0, 4, 5, 6, 1};
Observable.from(items)
.map(this::invert)
.doOnError(t -> Log.d(LOG_TAG, "Error: " + t.getMessage()))
.doOnNext(i -> Log.d(LOG_TAG, "Inverted: " + i))
.subscribe();
Run Code Online (Sandbox Code Playgroud)
该invert函数:
int invert(int i) {
return 1 / i;
}
Run Code Online (Sandbox Code Playgroud)
第一个正常执行,并且当抛出异常时onError执行.但另一方面,第二个不起作用,所以异常一直抛到调用方法.
这两段代码有什么区别?
Tas*_*kos 12
请记住,.doOnError()捕获异常,对其执行某些操作然后重新抛出异常.如果您想要不同的行为,请使用其中一种.onError*方法.
现在,异常没有传播到#1中的调用者而是传播到#2的原因是你在#1中提供了错误处理程序,但在#2中没有,在这种情况下默认是传播异常.
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |