public function raise() {
		// log error to file according to PLUG_ERROR_LOGGING
		if( PLUG_ERROR_LOGGING & $this->type ) {
			// send to standard, or configured log file 
			$logfile = defined('PLUG_ERROR_LOG') ? PLUG_ERROR_LOG : '';
			$logged = self::log( call_user_func(self::$logfunc,$this), $logfile );
		}
		// add to error stack if we are keeping this type if error
		// internal errors are always raised
		if( PLUG_ERROR_REPORTING & $this->type || $this->type === E_USER_INTERNAL ) {
			// register self as a raised error
			$this->id = self::$i++;
			self::$stack[ $this->type ][ $this->id ] = $this;
			// cli can pipe error to stderr, but not if the logging call already did.
			if( PLUG_CLI ){
				self::log( call_user_func(self::$logfunc,$this), STDERR );
			}
		}
		// call exit handler on fatal error
		// @todo - configurable fatal level
		$fatal = E_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR;
		if( $this->type & $fatal ){
			call_user_func( self::$deathfunc, $this );
		}
	}