我想使用Either
或Try()
替换以下代码。使用vanila scala,是否有任何直接的方法使下面的代码更简洁?我似乎想要的是有一个假设的Try(code).toOption.invert
。
def calculateSomething(): Option[String] =
try {
// execute some side effects
None
} catch {
case t:Throwable => Some("some error msg")
}
由于
答案 0 :(得分:3)
您可以使用failed
Try
方法,它有点像您正在寻找的invert
方法:
val option = Try(code).failed.toOption
如果您只想要错误消息,则可以map
覆盖它:
option.map(_.getMessage)
如果您想要自定义消息,您可以在throwable上getMessage
或只是拥有一个返回常量的函数(如_ => "my error message"
)。