未来の俳優が例外をスローするとどうなりますか?Akka先物の例外
http://doc.akka.io/docs/akka/snapshot/scala/futures.htmlでアッカのドキュメントによると:
俳優やディスパッチャが 未来を完了した場合、例外がキャッチされた場合、今後の代わりに有効なの を、それが含まれていますそれは問題ではありません結果。未来に例外が含まれている場合は、 を呼び出すとAwait.resultが再びスローされ、 を正しく処理できるようになります。
私は、これはコードのこの部分を実行しているときに私は見ています何であるかわからない:
class Worker extends Actor {
def receive = {
case i: Int => throw new RuntimeException
}
}
implicit val system = ActorSystem("MySystem")
val worker = system.actorOf(Props(new Worker), name="worker")
implicit val timeout = Timeout(5 minutes)
val future = worker ? 0
val res = Await.result(future, 10 seconds)
文書によると、Await.resultは再び例外をスローしますが、私が取得していますことはあるはずですTimeoutException!誰かがこれを明確にすることはできますか?
ご清聴ありがとうございます。あなたが提供したリンクは、俳優と未来の相互関係を明確にするのにも役立ちます。私は、あなたの理解に基づいて、この関係を明確にするのに十分正確な先物についての私の上記参照を見つけるのだろうか? – deepkimo
いいえ、私はドキュメントがよかったと思います。問題は、アクターが送信者に何かを返すとは仮定されていないため、質問が完了するかどうかは決して分かりません。これがうまく文書化されたか、または質問がちょうど取り除かれ、完全に型付けされた送信受信アクターの仕組みが実装されていれば、それは素晴らしいことでしょう。タイプのない俳優のあいまいさは、タイプのない、全く知られていない応答の可能性のあいまいさによってさらに悪化する。 – Noah
これは必要ですか? 'throw e //失敗の監督者を警告する'。エラーがログイン・アクターの「誤ったパスワード」によるものとします。スーパーバイザーに助けを借りるでしょうか? – Jus12