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
.
扔的
我正在使用构造函数 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
.