Закрытие apache CloseableHttpConnection и правильно обрабатывает закрывающее исключение - PullRequest
0 голосов
/ 09 мая 2019

Согласно документации Apache , всякий раз, когда вы открываете CloseableHttpClient, вы также должны закрывать его.Тем не менее, метод закрытия CloseableHttpClientthrows и IOException.Я не могу найти в документах ни слова об этом исключении.Что может быть причиной сбоя соединения?Что мне делать в этом случае?

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);
}

1 Ответ

0 голосов
/ 09 мая 2019

Для обработки IOException ничего не требуется, потому что IOException никогда не произойдет.

TL; DR;
CloseableHttpClient является абстрактным классом и реализует интерфейс Closeable. Как видите, метод Closeable::close объявляет throws IOException, но CloseableHttpClient оставляет его абстрактным методом. Таким образом, подклассы CloseableHttpClient должны заботиться о реализации.

HttpClients::createDefault возвращает InternalHttpClient, который реализует метод Closeable::close без объявления throws.

...