Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于scala中抛出的重复5XX响应代码,我应该使用哪种类型的异常?_Scala_Exception - Fatal编程技术网

对于scala中抛出的重复5XX响应代码,我应该使用哪种类型的异常?

对于scala中抛出的重复5XX响应代码,我应该使用哪种类型的异常?,scala,exception,Scala,Exception,简言之 如果http请求在scala中不断返回5XX响应代码,我应该抛出什么类型的异常 长格式 我有重试http请求的代码,因为我使用的是一些不太可靠的端点。这些重试往往有效。但有时,我只是不断得到408个错误的5xx,需要抛出一个异常。目前,我在下面的代码中有一个IOException的占位符 def requestRetrier ... try { responseObject = request(url, headers, payload, requestMethod, connect

简言之

如果http请求在scala中不断返回5XX响应代码,我应该抛出什么类型的异常

长格式

我有重试http请求的代码,因为我使用的是一些不太可靠的端点。这些重试往往有效。但有时,我只是不断得到408个错误的5xx,需要抛出一个异常。目前,我在下面的代码中有一个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
  }
....

我只想创建一个新的自定义异常,使其更加具体并抛出它

比如:

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.")
}

我只想创建一个新的自定义异常,使其更加具体并抛出它

比如:

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.")
}

为什么不创建一个自定义异常并抛出它呢?类似于
抛出新的retriesexcededexception(s“在$retryCount尝试后无法获得响应”)
@DanW我认为这是正确的答案。我已经添加了这个作为答案。如果它对您有效,请接受,这样问题就不会一直悬而未决。为什么不创建一个自定义异常并抛出它呢?类似于
抛出新的retriesexcededexception(s“在$retryCount尝试后无法获得响应”)
@DanW我认为这是正确的答案。我已经添加了这个作为答案。如果对你有效,请接受,这样问题就不会一直悬而未决。