/**
  * Default error handling is to create a pear error, but never return it.
  * if you need to handle errors you should look at setting the PEAR_Error callback
  * this is due to the fact it would wreck havoc on the internal methods!
  *
  * @param  int $message    message
  * @param  int $type       type
  * @param  int $behaviour  behaviour (die or continue!);
  * @access public
  * @return error object
  */
 function raiseError($message, $type = null, $behaviour = null)
 {
     if ($behaviour == PEAR_ERROR_DIE && !empty(DB_DataObject2::$CONFIG['dont_die'])) {
         $behaviour = null;
     }
     $error =& PEAR::getStaticProperty('DB_DataObject2', 'lastError');
     // this will never work totally with PHP's object model.
     // as this is passed on static calls (like staticGet in our case)
     if (isset($this) && is_object($this) && is_subclass_of($this, 'db_dataobject2')) {
         $this->_lastError = $error;
     }
     DB_DataObject2::$LASTERROR = $error;
     // no checks for production here?....... - we log  errors before we throw them.
     DB_DataObject2::debug($message, 'ERROR', 1);
     if (PEAR::isError($message)) {
         $error = $message;
     } else {
         require_once DATAOBJECT2_PATH . '/Error.php';
         $error = PEAR::raiseError($message, $type, $behaviour, $opts = null, $userinfo = null, 'DB_DataObject_Error');
     }
     return $error;
 }