e下演员具有能够覆盖的异常处理功能:
override def exceptionHandler = {
case e: Exception =>
println(e.getMessage())
}
每当一个异常的演员提出通常会导致它终止 - 在exceptionHandler
部分功能被应用到例外。
编辑
,出现异常过滤器:
class ExceptionalActor extends Actor{
def act() {
loop {
react {
case "bad" => throw new NoSuchFieldException("Bad Message")
case "impossible" => throw new Exception("Impossible Exception")
case m => println("non-bad message " + m)
}
}
}
override def exceptionHandler = {
case e: NoSuchFieldException => println("handled " + e.getMessage())
}
}
object Tester extends App {
val eActr = new ExceptionalActor
eActr start
eActr ! "any message1"
eActr ! "bad"
eActr ! "any message2"
eActr ! "impossible"
eActr ! "any message3"
}
生产:
non-bad message any message1
handled Bad Message
non-bad message any message2
[email protected]: caught java.lang.Exception: Impossible Exception
:
和演员死亡。
ref:Actors in Scala
很酷!这正是我所期待的。我期待在亚马逊上看到这本书。谢谢! – 2011-04-29 06:50:10