【发布时间】:2016-05-19 20:30:36
【问题描述】:
我有这样的事情:
def mySideEffectingMethod(): Unit = {
Try(someSideEffectingJavaMethod()) match {
case Failure(_: SomeExpectedException) => someSideEffectingJavaMethod() //perhaps attempt it again, for example
case Failure(ex) => throw ex
case Success(_) => //unit
}
}
有没有办法让我失去丑陋的case Success(_) => //unit?我不认为 recover 和 recoverWith 会削减它,因为在这种情况下它们将返回 Try[Unit] 而不是 Unit 从而抑制非预期异常。
【问题讨论】:
-
对不起,但在这种情况下,我认为您需要
try语句而不是Trymonad。如果您想以函数方式累积错误并将其他一些函数应用于属于Success[T]的对象,则使用Try。 -
是的,这很公平。我想上面的丑陋也可以。
-
如果您真的不在乎 Success 尝试所带来的价值,为什么不只是默认?
case _ =>
标签: scala scala-2.11