Mic*_*ael 3 error-handling scala
假设我有一个函数foo:Int => Try[Int],我需要通过重试来调用它。也就是说,Success大多数k时候我需要调用它直到它返回。
我正在写一个retry这样的函数:
def retry(k: retries)(fun: Int => Try[Int]): Try[Int] = ???
Run Code Online (Sandbox Code Playgroud)
我想retry返回其中一个Success或最后一个 Failure。你会怎么写呢?
这是我使用的,它对于任何返回的 thunk 都是通用的T:
@tailrec
final def withRetry[T](retries: Int)(fn: => T): Try[T] = {
Try(fn) match {
case x: Success[T] => x
case _ if retries > 1 => withRetry(retries - 1)(fn)
case f => f
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1249 次 |
| 最近记录: |