Mapuj wyjątek nieudanej przyszłości
Jaki jest najczystszy sposóbmap
Exception
nieudanegoFuture
w scali?
Powiedz, że mam:
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
val f = Future {
if(math.random < 0.5) 1 else throw new Exception("Oh no")
}
Jeśli przyszłość się powiedzie1
, Chciałbym to zachować, ale jeśli się nie uda, chciałbym zmienićException
na innyException
.
Najlepsze, co mogłem wymyślić, to transformacja, która jednak wymaga ode mnie niepotrzebnej funkcji w przypadku sukcesu:
val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
Czy jest jakiś powód, dla którego nie mamapFailure(PartialFunction[Throwable,Throwable])
?