Я пытаюсь научиться нашей стратегии наблюдения за Аккой. Когда у меня есть код что-то вроде этого ниже, я получаю это
java.lang.ArithmeticException: / от нуля
case object CreateChildren
case class DivideNumbers(n: Int , d:Int)
object SuperVision extends App {
val actorSystem = ActorSystem("SupervisingActorSystem")
val actor = actorSystem.actorOf(Props[ParentActor], "ParentActor")
actor ! CreateChildren
val child1 = actorSystem.actorSelection("/user/ParentActor/childActor")
child1 ! DivideNumbers(4,0)
class ParentActor extends Actor{
override def receive: Receive = {
case CreateChildren =>
context.actorOf(Props[ChildActor], "childActor")
}
}
class ChildActor extends Actor{
override def receive: Receive = {
case DivideNumbers(n,d) => println(n/d)
}
}
actorSystem.terminate()
}
Но когда у меня нет созданного Child Actor и у меня что-то подобное, я не вижу исключения.
val actorSystem = ActorSystem("SupervisingActorSystem")
val actor = actorSystem.actorOf(Props[ParentActor], "ParentActor")
actor ! DivideNumbers(4, 2)
class ParentActor extends Actor {
override def receive: Receive = {
case DivideNumbers(n, d) => println(n / d)
//case DivideNumbers(n, d) => throw new Exception
//Even this doesn't throw an exception
}
}
actorSystem.terminate()
- Почему я не вижу исключения, я что-то упускаю?
- В чем причина этого
поведение?
- Что такое хороший способ обработки исключений, когда у нас есть
только 1 актер без ребенка?