try {
     // original method body here
 } catch (Exception $caughtException) {
     Method $method = getExceptionHandlerMethod($caughtException.getClass())
     if($method) {
         return $method.invoke(this, $caughtException)
     } else {
         throw $caughtException
     }
 }