我想将错误的Twitter Future [Boolean]转换为特殊的Future。
一种方法是过滤然后将PartialFunction传递给rescue
:
theFuture
.filter(b => b) // if b is false, becomes exceptional
.rescue {
case Try.PredicateDoesNotObtain
=> Future.exception(new MyPreferredExceptionType())
}
另一种方法是使用flatMap:
theFuture
.flatMap(b => if (b) Future.value(b) else Future.exception(new MyPreferredExceptionType())
但是两种方式都显得笨拙且不习惯。有建议吗?