class_docstr: The implementation of OnlineTool based on (R)ecorder.
class_docstr_tok: ["The","implementation","of","OnlineTool","based","on","(","R",")","ecorder","."]
code: def _get_exp_name(self, exp_name):
      if exp_name is None:
          if self.default_exp_name is None:
              raise ValueError(
                  "Both default_exp_name and exp_name are None. OnlineToolR needs a specific experiment."
              )
          exp_name = self.default_exp_name
      return exp_name
  
imports: from typing import List, Union
  from qlib.log import get_module_logger
  from qlib.utils.exceptions import LoadObjectError
  from qlib.workflow.online.update import PredUpdater
  from qlib.workflow.recorder import Recorder
  from qlib.workflow.task.utils import list_recorders
label_desc: Use image node_id 7 for calling the OnlineToolR obj's underlying member method code with example usage: obj._get_exp_name(exp_name) and returns: exp_name