Pourquoi venir récupérer pas intercepter des exceptions?

Je suis en utilisant Scala, Play Framework 2.1.x, et reactivemongo pilote.

J'ai un appel d'api :

def getStuff(userId: String) = Action(implicit request => {
    Async {
      UserDao().getStuffOf(userId = userId).toList() map {
        stuffLst => Ok(stuffLst)
      } 
    }
})

Il fonctionne très bien à 99% du temps, mais il peut manquer parfois (n'importe pas pourquoi, ce n'est pas la question).

Je voulais récupérer en cas d'erreur alors j'ai ajouté:

recover { case _ => BadRequest("")}

Mais cela ne veut pas récupérer moi de faire des erreurs.

J'ai essayé le même concept sur la scala de la console et il a travaillé:

import scala.concurrent._
import scala.concurrent.duration._
import ExecutionContext.Implicits.global
var f = future { throw new Exception("") } map {_ => 2} recover { case _ => 1}
Await.result(f, 1 nanos)

Cela renvoie 1 comme prévu.

Je suis actuellement enveloppé Async avec:

try{
  Async {...}
} catch {
  case _ => BadRequest("")
} 

Et ceci intercepte les erreurs.

Je suis allé sur certains Scala Avenir de docs sur le net et je suis perplexe pourquoi récupérer n'a pas fonctionné pour moi.

Personne ne sait pourquoi? Ce qui me manque pour faire le tri?

InformationsquelleAutor samz | 2013-10-17