私はFuture.failedコンストラクタを使用して失敗した未来を作成していますが、失敗した未来は、Scala Future.failedは、渡された例外をスローします
session.loadAllメソッドは例外をスローします。
私はFuture.failedコンストラクタを使用して失敗した未来を作成していますが、失敗した未来は、Scala Future.failedは、渡された例外をスローします
session.loadAllメソッドは例外をスローします。
私はFuture.failed
が例外をスローされていないと思います。スタックトレースは例外が生成された場所で生成されるため、そうです。
あなたはAwait.result
のような方法、または将来が成功したことを前提として別の方法を使用するのであれば、あなたは例外の再スロー表示されますが、スタックトレースは、それが中にスローされたかのようにを見てようになりますFuture.failed
。
まずtry-catchブロックを使用して起こる
が、私はあなたが使用している理由は、非常にわからないプレイFrameworkを使用していますこれは非同期呼び出しのようには見えないからです。
しかし、あなたの質問に答えるために、私はここで何が起こっているのか完全にはわかりませんが、例外を処理する必要があるようです。未来の消費者は、Future.onComplete
のいずれかを使用し、パターンは失敗タイプ、つまりFuture.onFailure
とThrowableタイプのパターンマッチのいずれかを使用する必要があります。将来に関する
Scalaのドキュメント:http://docs.scala-lang.org/overviews/core/futures.html
問題は消費者にありますが、例外を処理していませんでした。 – vicaba
私はあなたが何を聞いたか全く分かりません。メソッド 'loadAll'は例外をスローします.OK、パターンマッチングがそれをキャッチします。そして、新しい' Exception'をラップする別の 'Future.failed'を返します。どうしたの?また、スクリーンショットには何がありますか? – slouc
@slouc私の意図は、あなたが言ったようにFutureを返すFutureを返すことです。問題は未来を返す代わりに、例外がスローされるということです。それが私がイメージで見せようとしているものです。例外がスローされないため、アプリケーションがクラッシュしないようにする必要があります(少なくとも、将来は例外をラップしてほしい)。 – vicaba
ああ、わかります。しかし、 'Future.failed(new Exception())'の部分は例外を投げるものではありません。他の何かがあります。おそらく 'getThings'の結果を消費する部分は失敗した未来を期待していません(しかし、なぜコンパイラがその場合は44行目に例外を表示するのか分かりません)。スクリーンショットのコメントは、イメージではなくコードスニペットを常にポストする必要があると言っていました。 – slouc