在Scala中,是否有一个预先存在的库函数用于将异常转换为选项?

2023-12-25

这基本上是包装 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(使用前将#替换为@)

在Scala中,是否有一个预先存在的库函数用于将异常转换为选项? 的相关文章

随机推荐

  • 时间顺序(小时)

    I tried seq from as POSIXct 2012 1 1 0 tz UTC to as POSIXct 2012 1 3 23 tz UTC by hour 但我只得到最后一天的 1 小时 0 00 00 而不是 24 小时
  • 错误:[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序

    将 NET 连接到 sybase 服务器时 我收到以下错误消息 Microsoft ODBC 驱动程序管理器 未找到数据源名称且未指定默认驱动程序 这以前工作正常 具有相同细节的系统 DSN 可以工作 并且通过 vs net 的数据连接也可
  • 在当前队列上同步调度

    我知道你可能会觉得这是一个奇怪的问题 但我刚刚学习 GCD 我想完全理解它的所有方面 所以这里是 是否有任何理由在当前队列上分派任务同步 例如 dispatch queue t concurrentQueue dispatch get gl
  • Vue JS with bootstrap carousel如何将图像传递到carousel

    我的要求是这样的 我从后端获取了图像列表 我想将这些图像名称传递给carousel显示图像 这是我的代码
  • 测试工具中的 Chisel 运行时错误

    This Chisel https chisel eecs berkeley edu 代码工作正常 chiselMainTest Array String backend c genHarness gt Module new Cache n
  • 使 JSpinner 只读取数字但也检测退格键

    我正在尝试制作一个仅接受数字的 JSpinner 但我也希望它能够读取 响应退格键 public class test JFrame frame JPanel panel JSpinner spinner public test frame
  • 脚本在命令行中成功执行,但未作为 cronjob 执行

    我有一个 bash 脚本 它运行一个 ruby 脚本来获取我的 Twitter feed home username twittercron bin bash cd home username twitter ruby twitter rb
  • 何时调用 SaveChanges

    假设我有类似的东西被调用Controller using var context new SqlContext context Items Add new Item item1 我应该打电话吗context SaveChanges 实体框架
  • MPRemoteCommandCenter 暂停/播放按钮未切换?

    我在 MPRemoteCommandCenter 中切换播放和暂停按钮时遇到问题 无论出于何种原因 音频和事件都将正常工作 但命令中心不会将播放按钮更改为暂停按钮 这是我的代码 void setupMPRemoteCommandCenter
  • Makefile 中的 $${HOME} 或 ${HOME} ?

    cat Makefile all echo VAR is HOME echo VAR is HOME Gives make echo VAR is home abc VAR is home abc echo VAR is HOME VAR
  • 从函数中获取经度和纬度值

    请问我如何在其函数之外获取 lat 和 lon 的值以在页面上的其他位置使用 navigator geolocation getCurrentPosition handle geolocation query handle errors f
  • 同时播放库中的视频并通过相机录制视频 - Objective c

    我正在构建一个应用程序 它可以播放库中的视频 同时使用相机录制视频 是否可以同时观看视频和录制视频 这里是链接 iPhone 媒体库中的示例 支持图像和视频here https github com yfujiki FGallery wit
  • for 循环中的 If 和Continue 语句

    我有一个forMatlab 中的循环 for 循环内的所有代码都包含在if陈述 例如 for p 1 length array if array p 1 Test positive for condition Generic code he
  • Subversion 合并历史可视化

    是否有任何实用程序可以绘制 subversion 存储库的合并历史记录的图片 我们总是使用 相当 一致的日志消息提交合并 并且能够自动将此信息提取到单个图片中会很方便显示什么时候发生了哪些分支 以及合并的状态是什么 我只是对信息工具感兴趣
  • SvelteKit 与 Nginx 返回响应错误 500

    我正在尝试建立SvelteKit项目并将其托管在服务器上nginx using sveltejs adapter static 该应用程序在本地开发时工作正常 但在构建并上传时我得到了500 JSON parse unexpected ch
  • 发布列表<接口> .net core 1.0

    我正在 net core 中构建一个动态表单创建器 表单 将由许多不同的表单元素组成 所以表单模型看起来像这样 public class FormModel public string FormName get set public Lis
  • 在 Hibernate 中使用 LIKE %

    我该如何使用LIKE 处于休眠状态 我想使用 SQLLIKE in my hbm xml文件 我有 2 个查询 我正在将其合并为 1 个 查询如下所示 select from PAY GROUP VW where CASE SID AND
  • 如何创建计算以从两个日期获取一个人的年龄?

    我正在尝试制定一种方法来计算一个人的年龄 我想在第二个下完成计算public static int getAge 如果这个人出生在当前日期之后 我希望它打印出错误 1 我如何比较两者SimpleDate values dateBd and
  • 动态更改 iframe 的 onload

    我有一个页面包含几个标签 我想动态更改他们的加载操作 我有以下代码 可以在 FF Safari Chrome Opera 中正常工作 但 IE 8 拒绝遵守 document getElementById myiframe onload f
  • 在Scala中,是否有一个预先存在的库函数用于将异常转换为选项?

    这基本上是包装 java 工厂方法 如果无法根据输入创建项目 这些方法会抛出异常 我正在基础库中寻找类似的内容 def exceptionToOption A f gt A Option A try Some f catch case e