Какие исключения нужно обрабатывать при выполнении удаленного вызова в Java - PullRequest
0 голосов
/ 12 июня 2018

Я делаю удаленный вызов в моем приложении.Я хочу обрабатывать разные исключения и выполнять разные задачи в случае соответствующих исключений.

Я изучаю MalformedURLException, UnknownHostException, ConnectionException и SocketTimeoutException.

Я знаючто в случае MalformedURLException я хочу отбросить запрос, и это довольно просто.

catch (MalformedURLException e) {
    log.info("MalformedURLException while fetching log");
    log.info("Content Url is Invalid and is being Dropped");
    return keywords;
}

Теперь в случае отключение Интернета Я хочу повторить запрос после небольшогоинтервал.Вот какое исключение я должен обработать?

Я запутался между ConnectException и UnknownHostException.

catch (UnknownHostException e) {
    log.info("UnknownHostException while fetching log");
    log.info("Internet disconnectivity Retrying Content Url");
    keywords.add(value);
    Thread.sleep(1000);
    return keywords;
}

Далее я использую con.setConnectTimeout(20000); и con.setReadTimeout(30000); в своем коде.Так что я предполагаю, что если это истечет, я смогу обработать SocketTimeoutException?

catch (SocketTimeoutException e) {
    log.info("SocketTimeoutException while fetching log:");
    keywords = increaseRetryCount(keywords, result, retryCount, url);
    return keywords;
}

Правильно ли я подхожу к проблеме и использую правильные исключения?Пожалуйста, скажите мне, если я что-то упустил.

1 Ответ

0 голосов
/ 12 июня 2018

ConnectException и UnknownHostException могут возникать как при отсутствии соединения.UnknownHostException происходит, когда в DNS-кэше не было записи, и ConnectException, когда в DNS-кэше была запись, но хост недоступен.

Просто перехватите IOException и повторите попытку (но не навсегда), вместо этого увеличивайте паузы и сдавайтесь через некоторое время).

Единственным особым случаем будет неверный URL или постоянная ошибка сервера (например, неверная аутентификация, ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...