Java >> Java tutorial >  >> Tag >> java.net

java.net.UnknownHostException:Ugyldigt værtsnavn for server

1. Introduktion

I dette selvstudie lærer vi årsagen til UnknownHostException med et eksempel. Vi vil også diskutere mulige måder at forebygge og håndtere undtagelsen på.

2. Hvornår er undtagelsen kastet?

Ukendt HostException angiver, at IP-adressen på et værtsnavn ikke kunne bestemmes. Det kan ske på grund af en tastefejl i værtsnavnet:

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

Ovenstående kode kaster en UnknownHostException siden den fejlstavede locaihost peger ikke på nogen IP-adresser.

En anden mulig årsag til UnknownHostException er DNS-udbredelsesforsinkelse eller DNS-fejlkonfiguration.

Det kan tage op til 48 timer, før en ny DNS-post bliver spredt rundt på internettet.

3. Hvordan forhindrer man det?

At forhindre undtagelsen i at opstå i første omgang er bedre end at håndtere den bagefter. Et par tips til at forhindre undtagelsen er:

  1. Dobbelttjek værtsnavnet: Sørg for, at der ikke er nogen tastefejl, og trim alle mellemrum.
  2. Tjek systemets DNS-indstillinger: Sørg for, at DNS-serveren er oppe og tilgængelig, og hvis værtsnavnet er nyt, vent på, at DNS-serveren indhenter det.

4. Hvordan håndteres det?

Ukendt HostException udvider IOException , hvilket er en kontrolleret undtagelse. I lighed med enhver anden markeret undtagelse skal vi enten kaste den eller omgive den med en try-catch blokere.

Lad os håndtere undtagelsen i vores eksempel:

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

Det er en god praksis at lukke forbindelsen, når UnknownHostException forekommer. En masse spildløse åbne forbindelser kan få programmet til at løbe tør for hukommelse.

5. Konklusion

I denne artikel lærte vi, hvad der forårsager UnknownHostException , hvordan man forhindrer det, og hvordan man håndterer det.

Som altid er koden tilgængelig på Github.


Java tag