code: def _try_recover(self, trial, error_msg):
          
          try:
              self.trial_executor.stop_trial(
                  trial,
                  error=error_msg is not None,
                  error_msg=error_msg,
                  stop_logger=False)
              trial.result_logger.flush()
              if self.trial_executor.has_resources(trial.resources):
                  logger.info("Attempting to recover"
                              " trial state from last checkpoint.")
                  self.trial_executor.start_trial(trial)
                  if trial.status == Trial.ERROR:
                      raise RuntimeError("Trial did not start correctly.")
              else:
                  logger.debug("Notifying Scheduler and requeueing trial.")
                  self._requeue_trial(trial)
          except Exception:
              logger.exception("Error recovering trial from checkpoint, abort.")
              self._scheduler_alg.on_trial_error(self, trial)
              self._search_alg.on_trial_complete(trial.trial_id, error=True)
docs: Tries to recover trial.
  
          Notifies SearchAlgorithm and Scheduler if failure to recover.
  
          Args:
              trial (Trial): Trial to recover.
              error_msg (str): Error message from prior to invoking this method.