[英]How can I throw error in onNext() with RxJava
.subscribe(
new Action1<Response>() {
@Override
public void call(Response response) {
if (response.isSuccess())
//handle success
else
//throw an Throwable(reponse.getMessage())
}
},
new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
//handle Throwable throw from onNext();
}
}
);
我不想在onNext()
處理(!response.isSuccess())
onNext()
。 我如何將它拋給onError()
並與其他throwable一起處理?
如果FailureException extends RuntimeException
,那么
.doOnNext(response -> {
if(!response.isSuccess())
throw new FailureException(response.getMessage());
})
.subscribe(
item -> { /* handle success */ },
error -> { /* handle failure */ }
);
如果您盡早拋出異常,這種方法效果最好,因為您可以輕松地進行重試,替代響應等。
你可以將你的響應flatMap
到響應或錯誤
flatMap(new Func1<Response, Observable<Response>>() {
@Override
public Observable<Response> call(Response response) {
if(response.isSuccess()){
return Observable.just(response);
} else {
return Observable.error(new Throwable(response.getMessage()));
}
}
})
解決方案是在中間添加一個運算符。 我的建議是使用map
因為它不會生成新的Observable
對象(與flatMap
相比):
.map(new Func1<Response, Response>() {
@Override
public Response call(Response response) {
if (response.isSuccess()) {
return response;
} else {
throw new Throwable(reponse.getMessage()));
}
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.