我正在使用 Akka,并希望为 PartialFunction 的所有情况运行一些代码。对于演员监督,我有类似的东西:
val supervisorStrategy = OneForOneStrategy() {
case npe: NullPointerException => Stop
case re: RuntimeException => Restart
}
我发现为所有情况运行一些代码而不必在每种情况下再次编写它的唯一方法是:
val pf = new PartialFunction[Throwable, Directive] {
def apply(throwable: Throwable) = {
doSomething(throwable)
throwable match {
case NullPointerException => Stop
case RuntimeException => Restart
}
}
def isDefinedAt(throwable: Throwable) = true
}
val supervisorStrategy = OneForOneStrategy()(pf)
我环顾四周并查看了其他答案(例如这个),但找不到任何替代我想出的方法。