java—从closeablehttpclient.execute()捕获异常所需的代码结构

yb3bgrhw  于 2021-06-27  发布在  Java
关注(0)|答案(2)|浏览(721)

鉴于,

val request: HttpPost = new HttpPost(url)
val response: CloseableHttpResponse = client.execute(request)

如何使用try-catch块来排列它们,以便正确地捕获异常?
这里写着 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 ?
谢谢你的帮助。

fnatzsnv

fnatzsnv1#

我猜您正在寻找类似的东西来尝试java的资源,在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")
  }
3z6pesqy

3z6pesqy2#

catch块可以命名它捕获的异常,如
catch(异常SQLE){….}
因此可以有多个catch块来处理不同的异常。

相关问题