如何解决从 CloseableHttpClient.execute() 捕获异常所需的代码结构
鉴于,
val request: HttpPost = new HttpPost(url)
val response: CloseableHttpResponse = client.execute(request)
如何使用 try catch 块安排它们,以便我可以正确捕获异常?
Here 它说 execute()
可以抛出 2 个异常,所以我尝试这样做
val client: CloseableHttpClient = HttpClientBuilder.create().build()
try{
val response: CloseableHttpResponse = client.execute(request)
}catch {
case ClientProtocolException => println("Excepton1")
case IOException => println("Exception2")
}finally {
response.close()
client.close()
}
但这是无效的,因为 response
未在 finally
块中解析,因为它是在 try
中声明的。
任何不让我使用 var
的解决方案?
感谢您的帮助。
解决方法
我猜您正在寻找类似于 java 中的 try-with-resources 的东西,在 Scala 中您可以使用 scala.util.Using
。这是您案例的示例用法
val url = ""
val request: HttpPost = new HttpPost(url)
Using.Manager { use =>
val client: CloseableHttpClient = use(HttpClientBuilder.create().build())
val response: CloseableHttpResponse = use(client.execute(request))
}.recover {
case ClientProtocolException => println("Excepton1")
case IOException => println("Exception2")
}
,
catch 块可以命名它捕获的异常,如
catch (SQLException e) { .... }
所以你可以有多个 catch 块来处理不同的异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。