Mapear exceções em um futuro completável para um tipo de exceção diferente?
Estou usando o futuro completo do java 8 e gostaria de poder fazer uma exceção lançada pelo futuro e transformá-la em uma exceção diferente.
Todo o material composto que tentei parece ter um curto-circuito quando ocorre uma exceção.
Usando um futuro da Scala, por exemplo, eu posso fazer algo assim:
scala.concurrent.Future<Object> translatedException = ask.recover(new Recover<Object>() {
@Override public Object recover(final Throwable failure) throws Throwable {
if (failure instanceof AskTimeoutException) {
throw new ApiException(failure);
}
throw failure;
}
}, actorSystem.dispatcher());
e eu gostaria de imitar isso em um futuro bloco composto em java. Isso é possível?