gpt4 book ai didi

scala - 返回Future.failed(Exception)与引发异常之间的区别

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

在Scala中,返回Future.failed(new Exception("message!"))throw new Exception("message!")有什么区别?

假设这是在返回Future[Unit]的函数中发生的,并且调用函数如下所示:

someFunction onFailure {
case ex: Exception => log("Some exception was thrown")
}


是否有一个相对于另一个的偏爱,还是每个都有特定的用例?

最佳答案

调用Future { throw ex }Future.failed(ex)将创建等效的结果。但是,使用Future.failed效率更高。如果我们查看来自Future.apply的摘录(来自here in the source):

promise complete {
try Success(body) catch { case NonFatal(e) => Failure(e) }
}


我们注意到(如预期的那样),这依赖于 try...catch块。与普通代码相比,这些方法会带来沉重的开销。 Future.failed方法本质上是实现此目的的捷径,而不必招致实际抛出异常的开销。

关于scala - 返回Future.failed(Exception)与引发异常之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31194138/

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