For actors, you need to catch the exception, and return it as a failure status . Right now, you are not returning anything to the sender, so you get a timeout exception:
class Worker extends Actor { def receive = { case i: Int => { try { throw new RuntimeException sender ! "Some good result" } catch { case e: Exception => sender ! akka.actor.Status.Failure(e)
Futures can handle this a little more elegantly, as they always send the result, while the actors do not (this will give you the same result as above):
val future = Future { throw new RuntimeException }
source share