Scala:除以零

我的应用程序中有类似以下内容:

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中有一些类似的东西,或者有一些东西可以删除“成功”和括号。有人可以照亮吗?

塞尼亚

我假设“被零除”只是一个示例,您无法避免引发异常。当您可以避免引发异常时,应按照以下答案进行操作

您可以使用getOrElseon方法Try代替orElse

def something(x: Int, y: Int) = Try(x/y).getOrElse(0)

如果只想恢复,ArithmeticException可以使用recovermethod和get

def something(x: Int, y: Int) =
  Try(x/y).recover{ case _: ArithmeticException => 0 }.get

使用methodget可以得到一个例外,如果TryFailure,则recover可以将其转换FailureSuccess

您也可以将转换Try为,Option以返回“无结果”而不会显示异常:

def something(x: Int, y: Int): Option[Int] = Try(x/y).toOption

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章