Подумайте о том, чтобы сделать значение get
более явным, сложив Try
примерно так:
Future(foo(s).fold(throw _, identity))
, однако было бы безопасно вызывать get
внутри Future
, несмотря на то, что это эстетически раздражает,
Future(foo(s).get)
, поскольку Future
внутренне использует Try
для обработки бросков в любом случае.Например,
def foo(s: String): Try[Int] = Try(throw new RuntimeException("boom!"))
def futureFoo(s: String): Future[Int] = Future(foo(s).get)
futureFoo("foo") andThen { case e => println(e) }
вывод
Failure(java.lang.RuntimeException: boom!)