如何恢复失败的任务?
How to Recover on a Failed Task?
鉴于:
import scalaz.concurrent.Task
import scalaz._
val result: Task[String \/ Int] = Task { throw new RuntimeException("!")}
然后,我运行它得到一个RuntimeException
:
scala> result.unsafePerformSync
java.lang.RuntimeException: !
...
Task
是否有 "equivalent" Future#recover
,即类似下面的内容?
def recover[A, B, C](t: Task[A], handleError: Throwable => B \/ C]: Task[B \/ C]
Task#handle
(或者 handleWith
)可以解决问题
def f: String = {
throw new RuntimeException()
"I will fail"
}
Task(f).handle{ case _ ⇒ "recovered"}.run \ recovered
鉴于:
import scalaz.concurrent.Task
import scalaz._
val result: Task[String \/ Int] = Task { throw new RuntimeException("!")}
然后,我运行它得到一个RuntimeException
:
scala> result.unsafePerformSync
java.lang.RuntimeException: !
...
Task
是否有 "equivalent" Future#recover
,即类似下面的内容?
def recover[A, B, C](t: Task[A], handleError: Throwable => B \/ C]: Task[B \/ C]
Task#handle
(或者 handleWith
)可以解决问题
def f: String = {
throw new RuntimeException()
"I will fail"
}
Task(f).handle{ case _ ⇒ "recovered"}.run \ recovered