static function raise_error( $code, $message, $type, array $trace = null ){
		if( error_reporting() === 0 ){
			// suppressed with `@' operator
			return;
		}
		self::clear_error_handlers();
		if( is_null($trace) ){
			$trace = debug_backtrace();
			array_shift( $trace );
		}
		$callee = current( $trace ); 
		$Err = new PLUGError( $code, $type, $message, $callee['file'], $callee['line'], $trace );
		$Err->raise();
		self::set_error_handlers();
		return $Err;
	}