是否由子actor中的函数生成的异常必须由子actor显式捕获和抛出,或者是否由supervisor策略指令(escalate)负责将生成的异常过滤到主管actor幕后?Akka actor的异常处理
我的导师策略:
override val supervisorStrategy =
OneForOneStrategy(maxNrOfRetries = 5, withinTimeRange = 5 minute) {
case _: ArithmeticException ⇒ Resume
case _: NullPointerException ⇒ Restart
case _: IllegalArgumentException ⇒ Stop
case _: IOException ⇒ Stop
case _: Exception ⇒ Restart
}
以及一些儿童演员中的操作可能可能抛出IOException。我是否应该在儿童演员中放置一个try catch块来抓住它,然后扔掉它以便主管能够抓住它?或者阿卡会在幕后照顾它?
但是,如果不抛弃它,那么例外情况是否会上升到主管级别,以便适当的主管策略可以应用到它? –
@PaulThomas是的,异常将被抛出完全相同,所以它将被处理完全一样。 – Quizzie