9.Rxjava2:error 처리
api
use
onErrorReturn
{{onErrorReturn}}
onErrorResumeNext
{{onErrorResumeNext}}
onExpectionResumeNext
{{onExpectionResumeNext}
onErrorReturn
Observable.create((ObservableOnSubscribe) e -> {
e.onNext(1);
e.onError(new NullPointerException());
e.onNext(2);
}).onErrorReturn(throwable -> 666)
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, e.getMessage());
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
log
02-03 15:18:02.628 1869-1869/... D/aaabccc: integer:1
02-03 15:18:02.628 1869-1869/... D/aaabccc: integer:666
02-03 15:18:02.638 1869-1869/... D/aaabccc: onComplete
onErrorResumeNext
Observable.create((ObservableOnSubscribe) e -> {
e.onNext(1);
e.onError(new Error());
e.onNext(2);
}).onErrorResumeNext(throwable -> {
return Observable.just(666,777);
})
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, e.getMessage());
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
}
log
02-03 15:47:35.608 5890-5890/... D/aaabccc: integer:1
02-03 15:47:35.608 5890-5890/... D/aaabccc: integer:666
02-03 15:47:35.608 5890-5890/... D/aaabccc: integer:777
02-03 15:47:35.608 5890-5890/... D/aaabccc: onComplete
onExpectionResumeNext
// throwable: Exception
Observable.create((ObservableOnSubscribe) e -> {
e.onNext(1);
e.onError(new Exception());
e.onNext(2);
}).onExceptionResumeNext(new Observable() {
@Override
protected void subscribeActual(Observer super Integer> observer) {
observer.onNext(666);
observer.onNext(333);
}
})
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "error");
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
log
02-03 15:47:35.608 5890-5890/... D/aaabccc: integer:1
02-03 15:47:35.608 5890-5890/... D/aaabccc: integer:666
02-03 15:47:35.608 5890-5890/... D/aaabccc: integer:777
02-03 15:47:35.608 5890-5890/... D/aaabccc: onComplete
//throwable : error
Observable.create((ObservableOnSubscribe) e -> {
e.onNext(1);
e.onError(new Error());
e.onNext(2);
}).onExceptionResumeNext(new Observable() {
@Override
protected void subscribeActual(Observer super Integer> observer) {
observer.onNext(666);
observer.onNext(333);
}
})
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "error");
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
});
log
02-03 16:24:05.658 11979-11979/... D/aaabccc: integer:1
02-03 16:24:05.658 11979-11979/... D/aaabccc: error
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.