java.net.UnknownHostException: Невалидно име на хост за сървър

1. Въведение

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

2. Кога се хвърля изключението?

UnknownHostException показва, че IP адресът на име на хост не може да бъде определен. Това може да се случи поради грешка в името на хоста:

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

Горният код изхвърля UnknownHostException, тъй като грешно написаният locaihost не сочи към никакви IP адреси.

Друга възможна причина за UnknownHostException е забавяне на разпространението на DNS или неправилно конфигуриране на DNS.

Може да отнеме до 48 часа, за да се разпространи нов DNS запис из интернет.

3. Как да го предотвратим?

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

  1. Проверете двукратно името на хоста: Уверете се, че няма печатна грешка, и изрежете всички бели пространства.
  2. Проверете DNS настройките на системата: Уверете се, че DNS сървърът е достъпен и ако името на хоста е ново, изчакайте DNS сървъра да навакса.

4. Как да се справим?

UnknownHostException разширява IOException , което е проверено изключение. Подобно на всяко друго проверено изключение, трябва или да го хвърлим, или да го обградим с блок за опит за улавяне .

Нека се справим с изключението в нашия пример:

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

Добра практика е да затворите връзката, когато възникне UnknownHostException . Много разточителни отворени връзки могат да доведат до изчерпване на паметта на приложението.

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

В тази статия научихме какво причинява UnknownHostException , как да го предотвратим и как да се справим с него.

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