斯卡拉:除以零
发布时间:2020-12-16 18:27:17 所属栏目:安全 来源:网络整理
导读:我的应用程序中有这样的东西: def something(x: Int,y: Int) Z { (x / y)} 现在,如果someval不是一个数字(意味着x或y等于0),那么我希望Z变为0而不是显示错误([ArithmeticException:除以零]) 我知道我能做到: Try(someVale) orElse Try(0) 然而,那将给我成
我的应用程序中有这样的东西:
def something(x: Int,y: Int) Z { (x / y) } 现在,如果someval不是一个数字(意味着x或y等于0),那么我希望Z变为0而不是显示错误([ArithmeticException:除以零]) 我知道我能做到: Try(someVale) orElse Try(0) 然而,那将给我成功(0),而我只是想在这种情况下给我一个0. 也许有一些像是在Scala中的ArithmeticException然后0或者删除“成功”和括号的东西.有人可以解决一些问题吗? 解决方法
我假设“除以零”只是一个例子,你无法避免抛出异常.当你可以避免抛出异常时,你应该像在
this answer中那样做.
您可以在Try而不是orElse上使用getOrElse方法: def something(x: Int,y: Int) = Try(x/y).getOrElse(0) 如果您只想在ArithmeticException上恢复,可以使用recover方法并获取: def something(x: Int,y: Int) = Try(x/y).recover{ case _: ArithmeticException => 0 }.get 如果Try is Failure,使用方法获取异常,但recover允许您将Failure转换为Success. 您还可以将Try to Option转换为返回“no result”而不显示异常: def something(x: Int,y: Int): Option[Int] = Try(x/y).toOption (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |