gpt4 book ai didi

scala - 如何处理 Scala Futures 中的异常?

转载 作者:行者123 更新时间:2023-12-01 10:10:29 24 4
gpt4 key购买 nike

我实现了一个简单的作业处理器,用于处理 futures (scala.actors.Futures) 中的子作业。这些 future 本身可以为处理子作业创建更多 future 。现在,如果其中一个子作业抛出异常,我希望作业处理器回复该作业的错误消息。我有一个发现失败子作业的变通解决方案,但我不确定这是否是最佳解决方案。基本上它是这样工作的:

sealed trait JobResult
case class SuccessResult(content: String) extends JobResult
case class FailedResult(message: String) extends JobResult

for(subjob <- subjobs) yield {
future {
try {
SuccessResult(process(subjob))
} catch {
case e:Exception => FailedResult(e.getMessage)
}
}
}

顶层的结果是 JobResults 的列表列表的递归列表...。我递归地在列表中搜索失败的结果,然后根据结果类型返回错误或组合结果。这行得通,但我想知道是否有更优雅/更简单的解决方案来处理 future 的异常?

最佳答案

你现在做的方式基本上就是 scala.Either 的设计目的。参见 http://www.scala-lang.org/api/current/scala/Either.html

关于scala - 如何处理 Scala Futures 中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5713262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com