gpt4 book ai didi

scala - 用于理解的 future 。检测故障

转载 作者:行者123 更新时间:2023-12-01 03:41:05 27 4
gpt4 key购买 nike

我正在使用 Scala 的 For comprehension 来等待几个 future 将被执行。但我也想处理 onFailure (我想将错误消息写入日志)。我怎样才能实现它?

这是我的代码:

val f1 = Future {...}
val f2 = Future {...}

for {
res1 <- f1
res2 <- f2
} {
// this means both futures executed successfully
process(res1, res2)
}

最佳答案

如果您只想将错误消息写入日志文件,您可以将错误日志链接到 onFailure部分:

val f1 = Future.successful("Test")
val f2 = Future.failed(new Exception("Failed"))

def errorLogging(whichFuture: String): PartialFunction[Throwable, Unit] = {
// Here you have the option of matching on different exceptions and logging different things
case ex: Exception =>
// Do more sophisticated logging :)
println(whichFuture +": "+ ex.getMessage)
}

f1.onFailure(errorLogging("f1"))
f2.onFailure(errorLogging("f2"))

val res = for {
res1 <- f1
res2 <- f2
} yield {
// this means both futures executed successfully
println(res1 + res2)
}

Await.result(res, Duration.Inf)

这将打印出:
Exception in thread "main" java.lang.Exception: Failed
at [...]
f2: Failed

正如您所看到的,问题在于事情可能会发生困惑,并且日志记录可能与最终记录异常的时间相距甚远。

关于scala - 用于理解的 future 。检测故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30759113/

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