There are various designs in Scala that contain a crash case. There are Option, Either, Tryand Future. (the Futuremain thing is abstract asynchronous operations, error handling for convenience). Scalaz have even more: Validation( Disjunctionand Maybebetter Eitherand Option).
All of them have a slightly different attitude to erroneous values. However, Trythey Futurehave very similar, both wrap Throwable. Therefore IMHO Future[Try[A]]does not contain much information (about an error). Compare with Future[Future[A]]or Try[Try[A]]. OTOH Future[Option[A]]or Future[Either[MyError, A]]makes sense to me.
There may be a situon where you have, for example, a potential glitch f: A => Band g: B => C, and you want to avoid creating too large tasks in ExecutionContext:
val a: Future[A] = ???
val c: Future[C] = a.map(f).map(g)
val c2: Future[Try[C]] = a.map(x => Try { f(x) } map g )
val c3: Future[C] = a.map(x => Try { f (x) }.map(g).get)
f g, , : f: A => Option[B] g: B => Option[C], , Future[Option[C]].