goo*_*goo 5 scala divide-by-zero
我的应用程序中有这样的东西:
def something(x: Int, y: Int) Z {
(x / y)
}
Run Code Online (Sandbox Code Playgroud)
现在,如果someval不是数字(意味着x或y等于0),那么我希望Z变为0而不是显示错误([ArithmeticException: Division by zero])
我知道我能做到:
Try(someVale) orElse Try(0)
Run Code Online (Sandbox Code Playgroud)
但是,这会给我,Success(0)而我只是想0在这种情况下给我一个.
也许if ArithmeticException then 0在Scala中有类似的东西可以删除"成功"和括号.有人可以解决一些问题吗?
sen*_*nia 12
我假设"除以零"只是一个例子,你无法避免抛出异常.当你可以避免抛出异常时,你应该像在这个答案中那样做.
您可以使用getOrElse方法Try而不是orElse:
def something(x: Int, y: Int) = Try(x/y).getOrElse(0)
Run Code Online (Sandbox Code Playgroud)
如果您只想恢复,ArithmeticException可以使用recover方法和get:
def something(x: Int, y: Int) =
Try(x/y).recover{ case _: ArithmeticException => 0 }.get
Run Code Online (Sandbox Code Playgroud)
使用方法get,如果Try是Failure,您将获得异常,但recover允许您转换Failure为Success.
您也可以将您Try到Option返回"无结果"没有表现出异常:
def something(x: Int, y: Int): Option[Int] = Try(x/y).toOption
Run Code Online (Sandbox Code Playgroud)
小智 12
我想我会期待:
def something(x: Int, y:Int) = if ( y != 0) x/y else 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5030 次 |
| 最近记录: |