Scala:使用try / catch重试异常处理

时间:2018-03-16 03:13:40

标签: json scala apache-spark try-catch user-defined-functions

我正在尝试为JSON转换添加重试逻辑。将对象转换为json时,如果有任何异常,我将重试3次。我在做:

BATCH_QUEUE_MAX = 100

这是对的吗?我是Scala的新手。有人可以建议我,如果有更好的方法来实现这一目标? Scala中是否有预定义的重试逻辑?我尝试为JSON转换添加重试逻辑的原因是由于我使用的Jackson版本(我现在无法更改),有时我的writeValueAsString会导致JSON不完整。

1 个答案:

答案 0 :(得分:0)

你重试功能似乎是正确的。我能想到的唯一缺陷是,如果你期望某些东西会失败,那么最好只返回类型Try[T],这样你就可以用scala方式处理它。

以下是我的实施之一:

def retry[T](n: Int)(block: => T): Try[T] = {
  val stream = Stream.fill(n)(Try(block))
  stream find (_.isSuccess) getOrElse stream.head
}