为了捕获异常,我可以使用Try recover get:
Try(op) recover {
case e: FooException => log; default
} get编辑:或Scala 2.12+注释中指出的fold
或者我可以使用Try match:
Try(op) match {
case Success(v) => v
case Failure(e: FooException) => log; default
case Failure(e)=> throw e
}这两者之间的区别是什么?哪一个更地道?原因是什么?是否有任何性能方面的影响?
发布于 2018-08-29 14:33:48
match版本更好。有三种可能的结果(值、默认值、异常),match版本清楚地说明了这一点,而recover版本则更加模糊。recover版本也有一个空的get,这通常是一个不好的信号。match也可能表现得更好,尽管与Try(op)中的工作相比,这两个版本的成本都很小。
https://stackoverflow.com/questions/52065278
复制相似问题