4
当在做RxJava1以下,在onNext异常将被重新路由到同一个用户的的onError:RxJava1 VS Rxjava2:异常的onNext
Observable.from(Arrays.asList("1", "22", "333", "4444")).subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.d("RxJava1", "onError: " + e.getCause());
}
@Override
public void onNext(String s) {
if (s.length() == 4) {
Integer test = null;
test.hashCode();
}
Log.d("RxJava1", s + " - " + s.length());
}
});
输出:
D/RxJava1: 1 - 1
D/RxJava1: 22 - 2
D/RxJava1: 333 - 3
D/RxJava1: onError: null
做当,就我所知,在RxJava2中相同,此行为已更改,不再返回到onError,而只是崩溃:
Observable.fromIterable(Arrays.asList("1", "22", "333", "4444")).subscribeWith(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
if (s.length() == 4) {
Integer test = null;
test.hashCode();
}
Log.d("RxJava2", s + " - " + s.length());
}
@Override
public void onError(Throwable e) {
Log.d("RxJava2", "onError: " + e.getCause());
}
@Override
public void onComplete() {
}
});
输出:
D/RxJava2: 1 - 1
D/RxJava2: 22 - 2
D/RxJava2: 333 - 3
D/AndroidRuntime: Shutting down VM
我主要是想知道,这2个版本是做什么的“错”? 这是一个已修复的RxJava1中的错误?这是RxJava2中的一个错误吗? 或者有没有在第一个地方有意识的改变,因为我找不到任何细节呢?
ps。我确实注意到,将此包装到'SafeObserver'中再次重新路由到onError