我的应用程序中有类似以下内容:
def something(x: Int, y: Int) Z {
(x / y)
}
现在,如果someval不是数字(表示x或y等于0),那么我希望Z变为0而不是显示错误([ArithmeticException: Division by zero]
)
我知道我可以做:
Try(someVale) orElse Try(0)
但是,那会给我,Success(0)
而0
在这种情况下,我只想给我一个。
也许if ArithmeticException then 0
在Scala中有一些类似的东西,或者有一些东西可以删除“成功”和括号。有人可以照亮吗?
我假设“被零除”只是一个示例,您无法避免引发异常。当您可以避免引发异常时,应按照以下答案进行操作。
您可以使用getOrElse
on方法Try
代替orElse
:
def something(x: Int, y: Int) = Try(x/y).getOrElse(0)
如果只想恢复,ArithmeticException
可以使用recover
method和get
:
def something(x: Int, y: Int) =
Try(x/y).recover{ case _: ArithmeticException => 0 }.get
使用methodget
可以得到一个例外,如果Try
是Failure
,则recover
可以将其转换Failure
为Success
。
您也可以将转换Try
为,Option
以返回“无结果”而不会显示异常:
def something(x: Int, y: Int): Option[Int] = Try(x/y).toOption
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句