Java.Net.UnknownHostException

Sheeraz Gul 12 octubre 2023
  1. Causas de la java.net.UnknownHostException en Java
  2. Evite la excepción java.net.UnknownHostException en Java
Java.Net.UnknownHostException

Este tutorial demuestra el error java.net.UnknownHostException en Java.

Causas de la java.net.UnknownHostException en Java

La java.net.UnknownHostException significa que no se puede encontrar la dirección IP del nombre de host. Por lo general, esto sucede cuando hay un error de escritura en el nombre de host.

Otro motivo de esta excepción es la mala configuración de DNS o la propagación de DNS. Puede tomar 48 horas para un nuevo DNS para toda la propagación de Internet.

Aquí hay un ejemplo de UnknownHostException en Java:

package delftstack;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Example {
  public static void main(String[] args) {
    String Host_Name = "https://delftstack.co";
    URL Demo_Url = null;

    try {
      Demo_Url = new URL(Host_Name);
      HttpURLConnection Demo_Connection = (HttpURLConnection) Demo_Url.openConnection();
      System.out.println(Demo_Connection.getResponseCode());
    } catch (MalformedURLException me) {
      me.printStackTrace();
    } catch (IOException ie) {
      ie.printStackTrace();
    }
  }
}

Lo anterior intenta conectarse a un host, pero el nombre del host tiene un error de tipeo. Lanzará la UnknownHostException.

Ver salida:

java.net.UnknownHostException: delftstack.co
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:299)
    at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:174)
    at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:183)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:498)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:603)
    at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:266)
    at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:189)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1242)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1128)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:175)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
    at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)
    at delftstack.Example.main(Example.java:16)

La excepción java.net.UnknownHostException es una excepción comprobada y puede manejarse usando los bloques try-catch. Vea a continuación cómo manejar la UnknownHostException en Java:

package delftstack;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;

public class Example {
  public static void main(String[] args) {
    String Host_Name = "https://delftstack.co";
    URL Demo_Url = null;

    try {
      Demo_Url = new URL(Host_Name);
      HttpURLConnection Demo_Connection = (HttpURLConnection) Demo_Url.openConnection();
      System.out.println(Demo_Connection.getResponseCode());
    } catch (UnknownHostException ue) {
      ue.printStackTrace();
    } catch (MalformedURLException me) {
      me.printStackTrace();
    } catch (IOException ie) {
      ie.printStackTrace();
    }
  }
}

Evite la excepción java.net.UnknownHostException en Java

Para evitar la excepción java.net.UnknownHostException en Java, debemos considerar los siguientes dos puntos:

  1. Primero, asegúrese de que el nombre de host sea correcto y no tenga ningún error de tipeo; vuelva a verificar si hay errores de tipeo o espacios en blanco.
  2. Verifique la configuración de DNS para asegurarse de que se pueda acceder al servidor. El nuevo nombre de host tardará en ponerse al día en el servidor DNS.

Probemos el mismo ejemplo con el nombre de host correcto. Ver ejemplo:

package delftstack;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;

public class Example {
  public static void main(String[] args) {
    String Host_Name = "http://localhost/";
    URL Demo_Url = null;

    try {
      Demo_Url = new URL(Host_Name);
      HttpURLConnection Demo_Connection = (HttpURLConnection) Demo_Url.openConnection();
      System.out.println(Demo_Connection.getResponseCode());
    } catch (UnknownHostException uhe) {
      uhe.printStackTrace();
    } catch (MalformedURLException me) {
      me.printStackTrace();
    } catch (IOException ie) {
      ie.printStackTrace();
    }
  }
}

El código anterior funcionará correctamente e imprimirá el código de respuesta. Ver salida:

200
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Error