code: public boolean handleStorageException(final StorageException exs) throws StorageException {
      // None of the retryable exceptions are reopenable, so it's OK to write the code this way.
      if (isRetryable(exs)) {
        handleRetryForStorageException(exs);
        return false;
      }
      if (isReopenable(exs)) {
        handleReopenForStorageException(exs);
        return true;
      }
      throw exs;
    }
docs: Checks whether we should retry, reopen, or give up.
  
  <p>In the latter case it throws an exception (this includes the scenario where we exhausted the
  retry count).
  
  <p>Otherwise, it sleeps for a bit and returns whether we should reopen. The sleep time is
  dependent on the retry number.
  
  @param exs caught StorageException
  @return True if you need to reopen and then try again. False if you can just try again.
  @throws StorageException if the exception is not retryable, or if you ran out of retries.