Рубрики
Без рубрики

java.net.UnknownHostException: Недопустимое имя хоста для сервера

Узнайте, что вызывает исключение UnknownHostException, как его предотвратить и как с ним справиться.

Автор оригинала: baeldung.

1. введение

В этом уроке мы узнаем причину UnknownHostException на примере. Мы также обсудим возможные способы предотвращения и обработки исключения.

2. Когда Возникает исключение?

UnknownHostException указывает, что IP – адрес имени хоста не может быть определен. Это может произойти из-за опечатки в имени хоста:

String hostname = "http://locaihost";
URL url = new URL(hostname);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.getResponseCode();

Приведенный выше код вызывает исключение UnknownHostException , поскольку неправильно написанный localhost не указывает ни на какие IP-адреса.

Еще одна возможная причина UnknownHostException это задержка распространения DNS или неправильная конфигурация DNS.

Для распространения новой записи DNS по всему Интернету может потребоваться до 48 часов.

3. Как Это предотвратить?

Предотвращение возникновения исключения в первую очередь лучше, чем последующая обработка. Несколько советов по предотвращению исключения:

  1. Дважды проверьте имя хоста: Убедитесь, что нет опечатки, и обрежьте все пробелы.
  2. Проверьте настройки DNS системы: Убедитесь, что DNS-сервер включен и доступен, и если имя хоста новое, дождитесь, пока DNS-сервер догонит вас.

4. Как с Этим справиться?

UnknownHostException расширяет IOException , которое является проверенным исключением . Как и любое другое проверенное исключение, мы должны либо выбросить его, либо окружить блоком try-catch .

Давайте рассмотрим исключение в нашем примере:

try {
    con.getResponseCode();
} catch (UnknownHostException e) {
    con.disconnect();
}

Рекомендуется закрывать соединение при возникновении UnknownHostException . Большое количество расточительных открытых соединений может привести к тому, что приложению не хватит памяти.

5. Заключение

В этой статье мы узнали, что вызывает UnknownHostException , как его предотвратить и как с ним справиться.

Как всегда, код доступен на Github .