如果出现错误,使用Try()将其映射到带有Some的选项(errorMsg)

时间:2017-12-05 13:01:31

标签: scala

我想使用EitherTry()替换以下代码。使用vanila scala,是否有任何直接的方法使下面的代码更简洁?我似乎想要的是有一个假设的Try(code).toOption.invert

def calculateSomething(): Option[String] =
    try {
      // execute some side effects
      None      
    } catch {
      case t:Throwable => Some("some error msg")
    }

由于

1 个答案:

答案 0 :(得分:3)

您可以使用failed Try方法,它有点像您正在寻找的invert方法:

val option = Try(code).failed.toOption

如果您只想要错误消息,则可以map覆盖它:

option.map(_.getMessage)

如果您想要自定义消息,您可以在throwable上getMessage或只是拥有一个返回常量的函数(如_ => "my error message")。