最终在 Scala Try 中等效[重复]

2024-01-01

def doWork() = {
  getLock()
  Try(useResource) match {
    case Success(result) => releaseLock(); result
    case Failure(e: Exception) => releaseLock(); throw e
  }
}

我试图惯用地确保退出时释放锁doWork。然而,作为该方法的一部分,我可能会抛出异常,所以我不能只在结束时释放锁doWork.

看起来有点代码味道releaseLock()重复两次。我可以通过使用传统的 Java 风格的 try/catch/finally 来减少这个问题:

def doWork() = {
  getLock()
  try {
    useResource
  } catch {
    case e: Exception => throw e
  } finally {
    releaseLock()
  }
}

但我更喜欢使用 Scala 的Try如果可能的话。

有没有办法在框架内执行“最终”逻辑Try?


只是松鼠Try暂时离开:

def doWork = {
  getLock()
  val t = Try(useResource)
  releaseLock()
  t.get
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最终在 Scala Try 中等效[重复] 的相关文章

  • Scala 函数作为对象与类

    trait MyFunctionTrait extends Int Int gt Double class MyFunction1 extends MyFunctionTrait override def apply a Int b Int
  • 单击“发送”按钮事件时,我们可以在哪里获取 xml/元数据格式的表单数据?

    我是一个新的 scala 学习者 作为要求的一部分 我需要将表单数据插入 activemq 队列中以进行提交事件 我尝试调试发送方法代码 以了解单击 FormRunnerActions scala 类中的发送按钮时我们到底在哪里获取 xml
  • 如何在“THEN”中打印“IF”条件的源代码

    我想在 THEN 部分打印 IF 条件的 Scala 源代码 例子 IF 2 2 lt 5 THEN println I am in THEN because sourceCodeOfCondition 现在我们跳过THEN部分 问题是 如
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept
  • 如何在 Scala 用户定义注释中使用命名参数?

    在下面的代码中 我能够获得第一个注释对象 Publishable 但不能获得第二个 第二个使用命名参数 它转换为 x 2 x 3 x 1 作为 AST 中的参数 我该如何正确地做到这一点 class Publishable val path
  • Scalaz 状态 monad 示例

    我还没有看到很多 scalaz 状态单子的例子 有这个例子 http scalaz github com scalaz scalaz 2 9 1 6 0 2 doc sxr scalaz example ExampleState scala
  • Scala 中的数字格式?

    我有一个从文件中读取的动态变化的输入 数字是Int or Double Scala 为什么要打印 0每次之后Double数字 Scala 有没有办法以与读取相同的方式打印它 Example var x Double 1 println x
  • scala 中的抽象类型

    我正在经历抽象类型Scala我收到一个错误 我正在尝试的例子 scala gt class Food abstract class Animal type SuitableFood lt Food def eat food Suitable
  • 为什么类型级计算需要 Aux 技术?

    我很确定我在这里遗漏了一些东西 因为我对 Shapeless 还很陌生并且我正在学习 但是 Aux 技术实际上是什么时候required 我看到它是用来暴露type通过将其提升为另一个 同伴 的签名来声明type定义 trait F A t
  • 如何更改 SBT 命令内的设置?

    我想要一个命令publish snapshot这将运行publish修改后的任务version设置 该设置将在执行命令时计算 我想出了如何获取当前值version内部命令 以及Project runTask task scope 似乎是调用
  • 为什么Scala语言中的++:运算符这么奇怪?

    我正在使用 运算符来获取两个集合的集合 但是我使用这两种方法得到的结果不一致 scala gt var r Array 1 2 r Array Int Array 1 2 scala gt r Array 3 scala gt r res2
  • Scala中如何将DataFrame转换为RDD?

    有人可以分享一下如何转换dataframe to an RDD Simply val rows RDD Row df rdd
  • Spark - Scala - 用另一个数据帧中的查找值替换数据帧中的值

    我正在 Databricks 上使用 Spark 编程语言是Scala 我有两个数据框 主要数据框 见截图 1 https i stack imgur com EShir png 查找数据框 见截图3 https i stack imgur
  • scala sbt 在多项目上测试运行设置和清理命令一次

    我知道我可以通过修改 testOptions 在 sbt 中添加设置和清理代码以用于测试阶段 例如 val embedMongoTestSettings Seq Setting Seq testOptions in Test Tests S
  • 简单的 Scala actor 问题

    我确信这是一个非常简单的问题 但很不好意思地说我无法理解它 我有一个 Scala 值列表 我想使用演员来并行地对每个值进行一些 外部 调用 我想等到所有值都已处理完毕 然后继续 没有共享值被修改 有人可以建议吗 Thanks Scala 中
  • 《使用 Apache Flink 进行流处理》如何从 IntelliJ 运行书籍代码?

    如中所述这个帖子 https stackoverflow com questions 61043860 how to run first example of apache flink我无法成功运行 使用 Apache Flink 进行流处
  • IntelliJ IDEA Scala 插件问题

    我对新的 Intellij IDEA 10 和 Scala 插件有疑问 当我在 Scala 源文件中输入任何内容时 编辑器会永久冻结 在其他文件 java 和其他 编辑器中效果很好 结构视图 scala 检查和显示成员功能已关闭 堆大小增加
  • Scala 性能问题

    In the 丹尼尔 科泽夸 Daniel Korzekwa 撰写的文章 http blog danmachine com 2011 01 moving from java to scala one year html 他说以下代码的性能
  • 哪些 ORM 与 Scala 配合得很好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 自定义 NIO 文件系统无法通过 SBT 的测试任务加载

    为了进行测试 我使用内存中的 NIOFileSystem执行 memoryfs https github com openCage memoryfs 我以前已经利用过它 并且它似乎运行良好 例如梅文 然而 现在 在SBT项目中 不可能初始化

随机推荐

  • Android:如何为android活动制作翻转动画,就像iphone从左到右水平翻转一样?

    在我的应用程序中 我想翻转视图 我在iPhone上看过这样的动画 我想在我的 Android 应用程序中实现同样的功能 我想翻转整个活动视图 是否可以 我见过一些 android 中翻转的例子 但在所有示例中 视图都位于同一个活动中 是否可
  • 使用 jquery 禁用右键单击图像

    我想知道如何使用 jQuery 禁用右键单击图像 我只知道这个 这有效 img bind contextmenu function e return false 或者对于较新的 jQuery nearestStaticContainer o
  • Eclipse-导入代码格式设置

    您好 我正在使用 intellij 通过以下步骤添加代码设置 jar 导入设置 然后指向此 JAR 然后右键单击该模块并执行 重新格式化代码 但现在我在 eclipse 中使用相同的项目 如何在clipse和格式代码中使用上述设置jar 除
  • 如何使用robotium生成测试结果报告?

    我一直在使用 Robotium 来测试我的 Android 应用程序 测试成功 但我想知道是否有任何方法可以在单独的文件中查看测试结果 我很幸运 只是像常规 Android JUnit 测试一样运行 robotsium 测试 然后使用标准机
  • 如何设置activemq的队列最大长度

    我想知道是否可以在activemq上配置队列的最大长度 以便当队列的长度达到限制时 入队操作将失败或抛出异常 有人知道这个问题吗 任何帮助将不胜感激 多谢 看一下生产者流程控制http activemq apache org Produce
  • 如何查看 ASP.NET OutputCache 的内容?

    有什么方法可以列出当前存储在 OutputCache 中的页面吗 只需一个路径列表即可 但如果有一种方法可以获取有关每个项目的更多信息 过期等 那就更好了 据我记得缓存是一个单例 每个应用程序域只有一个实例 OutputCache 也使用它
  • MSTest 中 [TearDown] 和 [SetUp] 的替代方案是什么?

    当我使用 MSTest Framework 并复制 Selenium IDE 为我生成的代码时 MSTest 无法识别 TearDown and SetUp 有什么替代方案吗 你会使用 TestCleanup and TestInitial
  • 快速而肮脏的 SQL 字符串转义

    我正在对家庭卷进行最后的润色QueryBuilder具有 postgresql 数据库的 Web 应用程序的类 它用PreparedStatement适用于所有查询 并防止 SQL 注入 然而我想要一种 快速而肮脏 的方式来表示QueryB
  • Grunt JS 复制到网络位置

    我想使用 grunt contrib copy 或任何其他 grunt 复制插件 将文件复制到网络位置 尝试如下 copy test files src Scripts dest location site Scripts 但得到 警告 无
  • 将特殊字符传递给 mailto 正文会导致 JavaScript 崩溃

    我有一个 C ASP NET 应用程序 它为某些用户配置文件信息创建一个 JavaScript 值数组 在客户端 我使用 jQuery JavaScript 读取数组并生成 mailto 链接 某些字段可以包含特殊字符 例如 这是 C 代码
  • 使用值更改清单 screenOrientation

    我正在训练通过资源以恒定值更改清单中的 screenOrientation 这是我的清单的一项活动
  • Neo4J安装-启动服务失败

    我正在尝试安装 Neo4j 1 8 但在启动服务时遇到问题 解压 zip 文件后 我直接进入 bin 文件夹并执行批处理文件 Neo4J bat install SC 创建服务成功 SC 启动服务失败 1053 服务未及时响应启动或控制请求
  • UserPrincipal.GetAuthorizationGroups() 方法出错

    我在 Web 应用程序中使用 UserPrincipal 类的 GetAuthorizationGroups 方法时遇到问题 使用以下代码 我收到 尝试检索授权组时 发生错误 5 PrincipalContext context new P
  • Mockito 测试活动

    我有一个生成事件的类 例如 public class EventSource public addEventListener EventListener listener public raiseEvent Event e listener
  • 当元素已在视口中时触发 IntersectionObserver

    The IntersectionObserver当元素在视口中可见达到一定程度 0 100 时触发 这意味着 当元素是已经 100 在视口中它不再触发 因为阈值没有变化 我有一个高度为200vh我想要IntersectionObserver
  • 将 Apache Shiro 安全库与基于 Dropwizard 的 JAX-RS 应用程序集成

    我正在尝试改变 Dropwizard 以支持 Shiro 我已阅读文档并且有点困惑 我想将 Shiro 与表单登录身份验证和 Apache Shiro 注释结合使用 我认为我需要使用 Jersey Filters 来支持 Shiro 这是在
  • Matplotlib:多线图

    我的数据框如下所示 Bin A B C Proba a Proba b Proba c gamma CPB 0 100 20841 23195 24546 34 503457 27 103303 22 859837 0 100 0 200
  • gwt-dev-mac.jar 丢失?

    我正在尝试在 Mac OS X 上使用 IntelliJ IDEA 进行 GWT 开发 并检查了同事在 Windows 上创建的 subversion 项目 项目文件附带了 GWT 的路径 C 这显然不适合我 当我在 模块设置 对话框中更改
  • 如何使用 pygame.KEYDOWN 在按住按键的情况下每次循环执行某些操作?

    我创建了 2 个函数 用于检查事件 def get pygame events pygame events pygame event get return pygame events and def get keys pressed sel
  • 最终在 Scala Try 中等效[重复]

    这个问题在这里已经有答案了 def doWork getLock Try useResource match case Success result gt releaseLock result case Failure e Exceptio