scala - 对于在 scala 中抛出的重复 5XX 响应代码,我应该使用哪种类型的异常?
问题描述
简而言之
如果http请求在scala中不断返回5XX响应代码,我应该抛出什么类型的异常?
长表
我有重试 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
}
....
解决方案
我只会创建一个新的自定义异常来更具体并抛出它。
就像是:
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.")
}
推荐阅读
- javascript - 在 vue 的同一个函数中使用 map 和 reduce
- c# - 用于 ASP.NET Core 5 MVC 的 NuGet 包
- dataframe - 使用作为字符串列表的变量的 API 调用创建数据框
- css - CSS 和 Firefox 的行为与其他浏览器不同的问题
- php - 在应用程序中重置密码 OTP
- python - Pymongo 获取随机记录和记录元素
- r - 在 qplot() 上将列名称作为 dot-dot-dot 进行非标准评估
- cookies - JMeter - 如何在提取的 cookie 值中添加花括号?
- javascript - React:getBoundingClientRect 获取先前渲染的位置
- python-3.x - 迭代读取excel工作表名称,将它们拆分并保存为Python中每个工作表的新列