Scala:抛出错误与返回尝试?
发布时间:2020-12-16 09:01:12 所属栏目:安全 来源:网络整理
导读:Scala API是否应该理想地抛出异常或返回Try值?有关于此的官方指南吗? def doSomethingMayThrow(): A = ???def doSomethingWontThrow(): Try[A] = ??? 解决方法 永远不要抛出可恢复错误的异常. 返回表示可能失败的适当数据结构(Future,a Try,Aither等)总是
Scala API是否应该理想地抛出异常或返回Try值?有关于此的官方指南吗?
def doSomethingMayThrow(): A = ??? def doSomethingWontThrow(): Try[A] = ??? 解决方法
永远不要抛出可恢复错误的异常.
返回表示可能失败的适当数据结构(Future,a Try,Aither等)总是比在野外抛出异常更可取.它将告知呼叫者失败的可能性,并将强制他们进行管理. 只应针对不可恢复的错误抛出异常,例如硬件故障等. 我们举一个例子: def throwOnOdds(x: Int): Int = if (x % 2 == 0) x / 2 else throw new Exception("foo") val x = throwOnOdds(41) + 2 // compiles and explodes at runtime 现在,让我们做得更好 def throwOnOdds(x: Int): Try[Int] = if (x % 2 == 0) Success(x / 2) else Failure(new Exception("foo")) val x = throwOnOdds(41) + 2 // doesn't compile 不处理失败会导致编译时错误,这比运行时错误要好.这是如何处理它 throwOnOdds(41) match { case Success(n) => // do something with n case Failure(e) => // handle exception } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |