Какой тип исключения я должен использовать для повторяющихся кодов ответа 5XX, выдаваемых в scala? - PullRequest
0 голосов
/ 07 мая 2020

Вкратце

Какой тип исключения я должен генерировать, если HTTP-запрос продолжает возвращать код ответа 5XX в scala?

Длинная форма

У меня есть код, который повторяет HTTP-запросы, потому что я работаю с некоторыми конечными точками, которые не очень надежны. Эти попытки обычно работают. Но иногда я просто получаю 5xx за ошибку 408 и мне нужно выбросить исключение. В настоящее время у меня есть заполнитель IOException в приведенном ниже коде.

def requestRetrier
...
try {
  responseObject = request(url, headers, payload, requestMethod, connectTimeout, readTimeout)
  if ((List(500, 503...) contains responseObject.responseCode) && (retries != 0)) {
    responseObject = requestRetrier(
      url = url,
      headers,
      payload,
      requestMethod,
      connectTimeout,
      readTimeout,
      retries - 1)
  } else if ((retries == 0) && (List(500, 503...) contains responseObject.responseCode)) {
    throw new java.io.IOException
  }
....

1 Ответ

2 голосов
/ 07 мая 2020

Я бы просто создал новое настраиваемое исключение, чтобы быть более конкретным c, и выбросил бы его.

Что-то вроде:

case class RetriesExceededException(message: String) extends Exception(message)

Затем вы можете использовать его в своем примере как:

} else if ((retries == 0) && (List(500, 503...) contains responseObject.responseCode)) {
    throw RetriesExceededException(s"Failed to get response after $retryCount tries.")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...