From 93a27b6d75ad9db73fd8133b3142dd85fc158d5f Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Wed, 27 May 2009 23:27:05 +0000 Subject: Added exceptionHandler method. --- src/actors/scala/actors/Actor.scala | 2 ++ src/actors/scala/actors/Reaction.scala | 13 +++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/actors') diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala index 29c57620a5..60c3c9a676 100644 --- a/src/actors/scala/actors/Actor.scala +++ b/src/actors/scala/actors/Actor.scala @@ -412,6 +412,8 @@ trait Actor extends AbstractActor { */ private var onTimeout: Option[TimerTask] = None + protected[actors] def exceptionHandler: PartialFunction[Exception, Unit] = Map() + protected[actors] def scheduler: IScheduler = Scheduler diff --git a/src/actors/scala/actors/Reaction.scala b/src/actors/scala/actors/Reaction.scala index 54a6b032e2..9a4c67b3be 100644 --- a/src/actors/scala/actors/Reaction.scala +++ b/src/actors/scala/actors/Reaction.scala @@ -54,10 +54,15 @@ class Reaction extends Runnable { a.exit() else { try { - if (f == null) - a.act() - else - f(msg) + try { + if (f == null) + a.act() + else + f(msg) + } catch { + case e: Exception if (a.exceptionHandler.isDefinedAt(e)) => + a.exceptionHandler(e) + } } catch { case _: KillActorException => } -- cgit v1.2.3