總結評論:當Future
出現故障時,您可以使用onFailure
回調執行一些副作用代碼(日誌記錄)。
val future = Future(1/0)
future.onFailure {
case _ => println("I have seen the Future, and it doesn't look good.")
}
由於@cmbaxter筆記,你也可以在Future
,它接受一個PartialFunction[Try[A], B]
並返回原Future
使用andThen
。因此,您可以使用andThen
以及之後的recover
來應用副作用功能。你甚至可以連鎖多次。
Future(1/0)
.andThen { case Failure(_) => println("Future failed.") }
.recover { case e: ArithmeticException => 0 }
.andThen { case Failure(_) => println("Tried to recover, and still failed.") }
或輔助,它總是包括它:
object FutureLogger {
def apply[A](a: => A): Future[A] = Future(a).andThen {
case Failure(_) => println("FAILURE")
}
}
你想你的函數執行所有的失敗,或者無論什麼? – 2015-04-02 17:35:24
僅適用於所有故障。 – 2015-04-02 17:41:44
爲什麼不使用'onFailure'回調呢? – 2015-04-02 17:46:49