加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中,是否存在将异常转换为Options的预先存在的库函数?

发布时间:2020-12-16 09:35:26 所属栏目:安全 来源:网络整理
导读:这基本上是为了包装java工厂方法,如果不能根据输入创建项目,则抛出异常。我正在寻找基础库中的东西,如: def exceptionToOption[A](f: = A):Option[A] ={ try{ Some(f)} catch{ case e:Exception = None} } 用法: val id:Option[UUID] = exceptionToOpti
这基本上是为了包装java工厂方法,如果不能根据输入创建项目,则抛出异常。我正在寻找基础库中的东西,如:

def exceptionToOption[A](f: => A):Option[A] ={
    try{
      Some(f)}
    catch{
      case e:Exception => None}
  }

用法:

val id:Option[UUID] = exceptionToOption(UUID.fromString("this will produce None"))

我知道我可以自己写,但我想检查我不是重新发明的轮子。

解决方法

使用 scala.util.control.Exception:

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读