Qual è il modo più pulito per il Exception
di un errore Future
in scala?Mappa l'eccezione di un futuro fallito
Dire che ho:
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
val f = Future {
if(math.random < 0.5) 1 else throw new Exception("Oh no")
}
se il futuro riesce con 1
, mi piacerebbe continuare a che, se non riesce vorrei cambiare il Exception
a un diverso Exception
.
Il meglio che ho potuto venire in mente è di trasformare, tuttavia, che mi obbliga a fare una funzione inutile per il caso di successo:
val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
C'è qualche motivo non v'è alcuna mapFailure(PartialFunction[Throwable,Throwable])
?
transform è la giusta via da percorrere. non è necessario creare la funzione s => s, basta passare in '' identity'' –
Cheers. Non conoscevo la funzione 'identità'. Sono sicuro che ci saranno più volte in cui ciò sarà utile. – theon