我的任务是使用 RxJava 进行实现,并以这种方式进行保护,如果发生任何错误,它就会被包装到自定义异常中。
问题是,无论我做什么,RxJavaPlugin 都会决定将我的异常包装到 CompositeException 中,即使只有一个异常。哪个测试失败。
我已经尝试了在谷歌上可以找到的所有方法,直到实际覆盖 RxJavaPlugin 的全局错误处理程序,但它忽略了尝试的更改。
在写这篇文章时应该抛出它的函数的实现
Single<BigDecimal> summarizeConfirmedTransactions() throws SummarizationException {
try{
Observable<Transaction> observableTransactions = transactions.get()
.doOnError(throwable -> {
Exceptions.propagate(throwable);
});
Observable<Confirmation> observableConfirmations = confirmations.get()
.doOnError(throwable -> {
Exceptions.propagate(throwable);
});
return Observable.zip(observableTransactions, observableConfirmations, (t, c) -> new ConfirmableTransaction(t.transactionId, c.isConfirmed, t.value))
.filter(confirmableTransaction -> confirmableTransaction.isConfirmed)
.map(t -> t.value)
.reduce(BigDecimal::add)
.toSingle()
.doOnError(throwable -> {
Exceptions.propagate(throwable);
});
}catch(Exception e)
{
throw new SummarizationException(e.getMessage());
}
测试中的断言失败,因为最终抛出的异常是 CompositeException,其中包含单个异常。我需要让它成为 SummarizationException.class
非常感谢。
浮云间
哔哔one
相关分类