这基本上是包装 java 工厂方法,如果无法根据输入创建项目,这些方法会抛出异常。我正在基础库中寻找类似的内容:
def exceptionToOption[A](f: => A):Option[A] ={
try{
Some(f)}
catch{
case e:Exception => None}
}
Usage:
val id:Option[UUID] = exceptionToOption(UUID.fromString("this will produce None"))
我知道我可以自己编写,但我想检查一下我没有重新发明轮子。
Use scala.util.control.Exception http://www.scala-lang.org/api/current/index.html#scala.util.control.Exception%24:
import scala.util.control.Exception._
allCatch opt f
你还可以让它变得更加复杂。例如,要仅捕获算术异常并检索异常:
scala> catching(classOf[ArithmeticException]) either (2 / 0)
res5: Either[Throwable,Int] = Left(java.lang.ArithmeticException: / by zero)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)