我使用Failure
消息让发件人知道出了问题。使用sender() ! Failure(new RuntimeException())
它是在演员或发件人方面抛出异常(或者两者都没有)?
答案 0 :(得分:1)
有(至少)两个Failure
类,scala.util.Failure
是Scala Try
API中的一种类型,类似于{{{{{ 1}}。您可以在scaladocs for Try
另一个是try-catch
的一部分,它是一个类似的ADT,但更简单的API表示值成功或异常失败。它在Akka内部使用,但也由一些公共API使用,例如akka.actor.Status
模式,它将未来的结果作为消息发送到pipe
(in the Akka docs)。
发送和接收ActorRef
时,不会自动执行任何特殊操作,因此在接收方,您必须在Failure
上匹配才能在您的演员中接受此类消息。
由于可以编写接收块,您可以自己定义Failure
的可重用处理,并与演员的常规接收块结合,for example as described here