Jaki jest najczystszy sposób na map
z Exception
nieudanego Future
w scala?Mapowanie wyjątku nieudanej przyszłości
Say 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ści uda się 1
, chciałbym zachować to, jednak, jeśli nie chciałabym zmienić Exception
do innego Exception
.
Najlepszym mogłem wymyślić jest przekształcić jednak, że wymaga mi zrobić niepotrzebnych funkcji dla przypadku sukcesu:
val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
Czy jest jakiś powód, nie ma mapFailure(PartialFunction[Throwable,Throwable])
?
Transform to właściwa droga. nie musisz tworzyć funkcji s => s, po prostu przekazuj w "tożsamości" –
Pozdrawiam. Nie wiedziałem o funkcji "tożsamości". Jestem pewien, że będzie więcej razy, kiedy to się przyda. – theon