/**
  * handle exceptions
  * 
  * @param Zend_Json_Server_Request_Http $request
  * @param Exception $exception
  * @return Zend_Json_Server_Response
  */
 protected function _handleException($request, $exception)
 {
     $server = self::_getServer();
     $exceptionData = method_exists($exception, 'toArray') ? $exception->toArray() : array();
     $exceptionData['message'] = htmlentities($exception->getMessage(), ENT_COMPAT, 'UTF-8');
     $exceptionData['code'] = $exception->getCode();
     if ($exception instanceof Tinebase_Exception) {
         $exceptionData['appName'] = $exception->getAppName();
         $exceptionData['title'] = $exception->getTitle();
     }
     Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' ' . get_class($exception) . ' -> ' . $exception->getMessage());
     $suppressTrace = Tinebase_Core::getConfig()->suppressExceptionTraces;
     if ($suppressTrace !== TRUE) {
         $exceptionData['trace'] = Tinebase_Exception::getTraceAsArray($exception);
     }
     Tinebase_Exception::log($exception, $suppressTrace);
     $server->fault($exceptionData['message'], $exceptionData['code'], $exceptionData);
     $response = $server->getResponse();
     if (null !== ($id = $request->getId())) {
         $response->setId($id);
     }
     if (null !== ($version = $request->getVersion())) {
         $response->setVersion($version);
     }
     return $response;
 }