Java.Net.UnknownHostException

Sheeraz Gul 2023년10월12일
  1. Java에서 java.net.UnknownHostException의 원인
  2. Java에서 java.net.UnknownHostException 방지
Java.Net.UnknownHostException

이 자습서는 Java의 java.net.UnknownHostException 오류를 보여줍니다.

Java에서 java.net.UnknownHostException의 원인

java.net.UnknownHostException은 호스트 이름의 IP 주소를 찾을 수 없음을 의미합니다. 일반적으로 이것은 호스트 이름에 입력 실수가 있을 때 발생합니다.

이 예외의 또 다른 이유는 잘못된 DNS 구성 또는 DNS 전파입니다. 인터넷 전파를 위한 새 DNS에 48시간이 걸릴 수 있습니다.

다음은 Java에서 UnknownHostException의 예입니다.

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();
    }
  }
}

위는 호스트에 연결을 시도하지만 호스트 이름에 입력 오류가 있습니다. UnknownHostException이 발생합니다.

출력 참조:

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)

java.net.UnknownHostException은 확인된 예외이며 try-catch 블록을 사용하여 처리할 수 있습니다. Java에서 UnknownHostException을 처리하는 방법은 아래를 참조하십시오.

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();
    }
  }
}

Java에서 java.net.UnknownHostException 방지

Java에서 java.net.UnknownHostException을 방지하려면 다음 두 가지 사항을 고려해야 합니다.

  1. 먼저 호스트 이름이 정확하고 입력 실수가 없는지 확인하십시오. 입력 실수나 공백이 있는지 다시 한 번 확인하십시오.
  2. DNS 설정을 확인하여 서버에 연결할 수 있는지 확인합니다. 새 호스트 이름은 DNS 서버를 따라잡는 데 시간이 걸립니다.

올바른 호스트 이름으로 동일한 예를 시도해 보겠습니다. 예를 참조하십시오:

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();
    }
  }
}

위의 코드는 올바르게 작동하고 응답 코드를 인쇄합니다. 출력 참조:

200
작가: Sheeraz Gul
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

관련 문장 - Java Error