Observable
如果 an在完成之前没有发出恰好一个值,我想“抛出”自定义错误。
让我试着举一个例子:
Observable<SomeClass> stream = ...
stream
.filter(...)
.singleOrError(new MyCustomException())
所以我有一个 SomeClass 对象流。fitler()
如果不只发出一个元素,我想发出自定义错误。
Observable
如果 an在完成之前没有发出恰好一个值,我想“抛出”自定义错误。
让我试着举一个例子:
Observable<SomeClass> stream = ...
stream
.filter(...)
.singleOrError(new MyCustomException())
所以我有一个 SomeClass 对象流。fitler()
如果不只发出一个元素,我想发出自定义错误。
由于如果源不发出任何项目就会.singleOrError()
抛出NoSuchElementException
异常,因此您可以检查抛出异常的实例并返回您的自定义异常。
stream.filter(...)
.singleOrError()
.onErrorResumeNext(throwable -> {
if (throwable instanceof NoSuchElementException) {
return Single.error(new MyCustomException());
} else {
return Single.error(throwable);
}
});
请注意,如果filter()
发出多个项目,singleOrError()
将抛出IllegalArgumentException
. 这可以在 中处理,也可以onErrorResumeNext()
通过简单地添加take(1)
before来处理singleOrError()
。