public function error($reason=null, $code=response::STATUS_INTERNAL_SERVER_ERROR, $user_message=null) {
	$response = bootstrap::get_library('response');
	
	$error_data = [
		'status_code'    => $code,
		'status_message' => $response::get_status_message($code),
	];
	$error_data['status_code_is_'.$code] = true;
	
	if ($user_message) {
		$error_data['user_message'] = $user_message;
	}
	if (ENVIRONMENT == 'development') {
		$error_data['development'] = true;
		
		if ($reason) {
			$error_data['reason'] = $reason;
		}
	}
	
	if (!empty($this->data['exception']['current'])) {
		if ($this->data['exception']['current'] instanceof \alsvanzelf\fem\exception) {
			if (empty($error_data['user_message'])) {
				$error_data['user_message'] = $this->data['exception']['current']->getUserMessage();
			}
			
			$error_data['user_action'] = $this->data['exception']['current']->getUserAction();
		}
		
		if (ENVIRONMENT != 'development') {
			unset($this->data['exception']);
		}
	}
	
	$response::send_status($code);
	
	if (empty(static::$default_error_template)) {
		$page_data = [
			'error' => $error_data,
		];
		if (!empty($this->data['exception'])) {
			$page_data['exception'] = $this->data['exception'];
		}
		
		static::show_default_error($page_data);
	}
	else {
		$this->data['title'] = $error_data['status_message'];
		$this->data['error'] = $error_data;
		
		$this->show(static::$default_error_template);
	}
	
	die;
}