2017-05-02 3 views
0

J'ai un problème avec Scala Futures. J'ai une fonction qui prend deux paramètres: x: Future [Int] et y: Future [Int].Gestion des exceptions avec scala futures

La fonction doit retourner un avenir qui se termine avec:

    valeur
  • de x si x se termine avec succès,
  • valeur
  • de y si x échoue et y réussit,
  • l'exception qui a échoué y si x échoue et y échoue.

Je n'arrive pas à comprendre comment faire cela.

Le code actuellement:

def myFunction(x: Future[Int], y: Future[Int]): Future[Int] = { 
    x.onSuccess { 
    case result => return Future(result) 
    } 
    x.onFailure { 
    case e => 
     y.onSuccess { 
     case res => return Future(res) 
     } 
     y.onFailure { 
     case f => throw f 
     } 
    } 
} 

Répondre

3

simplement:

x.recoverWith { case _ => y } 
+0

Merci, tout ce que je avais besoin! – pythoner

+0

Heureux que cela a aidé. Veuillez accepter comme réponse :) –