2015-10-07 3 views
0

В моем актере, методы могут бросить исключение:Как поймать исключения, брошенные внутри актера?

class ServerActor extends Actor { 
    override def receive: Receive = { 
    case "Start" => 
     println("### actor started") 
     throw new Exception("My exception when starting") 
    case msg => 
     println("### actor get other message: " + msg) 
     throw new Exception("another exception for other messages: " + msg) 
    } 
} 

Есть ли способ, чтобы обрабатывать все исключения в одном месте? Я хочу обрабатывать их вместе, например. их регистрации

+1

Не обрабатывайте его. Пусть это рухнет! –

+0

Вы хотите просто зарегистрировать исключение или восстановить? – tariksbl

+0

@tariksbl может быть только регистрация – Freewind

ответ

3

хорошо вы можете попробовать сделать это в родителей в рамках стратегии контроля: http://doc.akka.io/docs/akka/snapshot/scala/fault-tolerance.html

или у вас есть этот метод на актера def preRestart(reason: Throwable, message: Option[Any]): Unit

, где причиной является исключением, что заставило актера к сбою.

Смежные вопросы