gpt4 book ai didi

scala - 为什么 Future(Failure(new Exception)) 返回成功而不是失败?

转载 作者:行者123 更新时间:2023-12-04 02:33:39 25 4
gpt4 key购买 nike

我正在尝试以下并认为我会失败

val failure = Future { Failure(new Exception) }

但是我得到了

Future(Success(Failure(java.lang.Exception)))

谁能回答为什么?

最佳答案

Future.failed可以创造一个失败的 future ,例如

Future.failed(new Exception)

扔进 future

Future(throw new Exception)

或调用Future.fromTry

Future.fromTry(Failure(new Exception))

不过

Future(Failure(new Exception))

不代表失败的 future 因为

Failure(new Exception)

尽管名称可能具有误导性,但它只是一个常规值,例如,

val x = Failure(new Exception)
val y = 42
Future(x)
Future(y)

因此 Future(x) 是一个成功的 future ,原因与 Future(y) 是一个成功的 future 相同。

您可以将 Future 视为一种异步 try-catch,因此如果您不在 try 中抛出

try {
Failure(new Exception) // this is not a throw expression
} catch {
case exception => // so exception handler does not get executed
}

然后 catch 处理程序不会被执行。

关于scala - 为什么 Future(Failure(new Exception)) 返回成功而不是失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62874280/

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