Акка Фьючерс Исключения
Что происходит, когда актер будущего выдает исключение?
Согласно документации Akka наhttp://doc.akka.io/docs/akka/snapshot/scala/futures.html:
Не имеет значения, завершает ли Актер или диспетчер Future, и если поймано исключение, оно будет содержать его вместо действительного результата. Если Future содержит Исключение, вызов 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! Может кто-нибудь прояснить это?