首页 文章

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

提问于
浏览
0

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

session.loadAll方法会抛出异常 .

我也在使用Play Framework

Future.failed throws an exception image

甚至使用try-catch块
enter image description here

2 回答

  • 2

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

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

  • 1

    首先,我不太清楚为什么你在这里使用未来,因为它们看起来不像异步调用 .

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

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

相关问题