Pab*_*dez 3 refactoring scala try-catch
在scala中有更优雅的方法吗?
def doTheDangerousThing(): Try[Result] = {
val result = Try(dangerousOp)
if (result.isFailure) {
println("error")
}
result
}
Run Code Online (Sandbox Code Playgroud)
vpt*_*ron 13
我认为你的if语句完全有效.这是另一种选择:
def doTheDangerousThing(): Try[Result] = Try(dangerousOp) recoverWith {
case exception => println("error"); Failure(exception)
}
Run Code Online (Sandbox Code Playgroud)
好吧,我想你可以这样做:
def doTheDangerousThing(): Option[Result] =
Try(dangerousOp) match {
case Success(result) => Some(result)
case Failure(e) => None //might want to log the error as well
}
Run Code Online (Sandbox Code Playgroud)