根据Apache documentation的说法,每当打开CloseableHttpClient时,也必须将其关闭。但是,CloseableHttpClientthrowsIOException的close方法。我在文档中找不到有关此异常的任何单词。连接即将失败的可能原因是什么?在这种情况下我该怎么办?

private void someMethod(){

    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPost post = createPostRequest(); //some custom build request.

    HttpResponse response;

    try{
        response = httpClient.execute(post);
    }catch(Exception e){
        handleException(e);
    }finally{
        try{
            httpClient.close()
        }catch(IOException e){
            //WHAT TO DO HERE ?!?!?
        }
    }
    doSomethingWith(response);
}

最佳答案

无需处理IOException,因为IOException永远不会发生。

TL; DR;
CloseableHttpClient是抽象类,它实现接口Closeable。如您所见,Closeable::close方法声明了throws IOException,但是CloseableHttpClient将其保留为抽象方法。因此,CloseableHttpClient的子类应注意实现。

HttpClients::createDefault返回InternalHttpClient,它实现了完全没有Closeable::close声明的throws方法。

10-07 21:11