Scala Future.failed 抛出传递给它的异常

Scala Future.failed throws the exception passed to it

我正在使用构造函数 Future.failed 创建一个失败的 future,但失败的 future 仍然在我认为不应该抛出异常时抛出异常。

方法 session.loadAll 确实抛出异常。

我也在使用 Play Framework

甚至使用 try-catch 块也会发生这种情况

首先,我不太确定你为什么在这里使用 future,因为它们看起来不像异步调用。

但是,为了回答您的问题,我不完全确定这里发生了什么,但看起来您需要处理异常。未来的消费者应该使用 Future.onComplete 和模式匹配 Failure 类型,或者 Future.onFailure 和模式匹配 Throwable 类型。

关于未来的 Scala 文档:http://docs.scala-lang.org/overviews/core/futures.html

我认为 Future.failed 没有抛出异常。看起来是的,因为堆栈跟踪是在创建异常的地方生成的。

因此,如果您使用 Await.result 之类的方法,或假设未来成功的其他方法,您将看到异常重新抛出,但堆栈跟踪将使它成为 看起来好像是在Future.failed.

扔的