2016-09-03 6 views
0

を考える:失敗したタスクでの復旧方法

import scalaz.concurrent.Task 
import scalaz._ 

val result: Task[String \/ Int] = Task { throw new RuntimeException("!")} 

をその後、私は得るためにそれを実行しましたRuntimeException

scala> result.unsafePerformSync 
java.lang.RuntimeException: ! 
... 

Taskは、以下のようなFuture#recover "同等"、すなわち何かを持っていますか?

def recover[A, B, C](t: Task[A], handleError: Throwable => B \/ C]: Task[B \/ C]

答えて

2

Task#handle(あるいはhandleWith)はトリック

def f: String = { 
    throw new RuntimeException() 
    "I will fail" 
    } 
    Task(f).handle{ case _ ⇒ "recovered"}.run \\ recovered 
を行い
関連する問題