Was ist der sauberste Weg zu map
der Exception
eines fehlgeschlagenen Future
in scala?Karte die Ausnahme einer fehlgeschlagenen Zukunft
Sagen, ich habe:
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
val f = Future {
if(math.random < 0.5) 1 else throw new Exception("Oh no")
}
Wenn die Zukunft mit 1
erfolgreich ist, würde ich die gerne behalten, aber wenn es nicht ich die Exception
auf eine anderen Exception
ändern möchte.
Das Beste, was ich tun konnte, Transformation, aber das mir erfordert eine unnötige Funktion für den Erfolgsfall zu machen:
val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
Gibt es irgendeinen Grund gibt es keine mapFailure(PartialFunction[Throwable,Throwable])
ist?
Transformation ist der richtige Weg zu gehen. Sie müssen nicht die Funktion s => s erstellen, geben Sie einfach "identity" ein –
Prost. Ich wusste nichts über die Identitätsfunktion. Ich bin mir sicher, dass es mehr Zeiten geben wird, in denen das nützlich sein wird. – theon