欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java UnknownHostException –服务器的无效主机名–如何解决?

发布时间:2023/12/3 java 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java UnknownHostException –服务器的无效主机名–如何解决? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

An UnknownHostException的快速指南,如果在为远程方法调用创建到远程主机的连接时发生java.net.UnknownHostException,则会抛出该快速指南。 UnknownHostException的预防方法。

1.简介

在本教程中,我们将学习什么是UnknownHostException以及产生它的原因 。 并且学习如何预防 。 UnknownHostException是一个常见的异常,它将显示防止该异常的最佳方法。

层次结构:

java.lang.Object java.lang.Throwable java.lang.Exception java.io.IOException java.rmi.RemoteException java.rmi.UnknownHostException

2.何时引发异常?

当且仅当域名存在问题或键入错误时,才会引发UnknownHostException 。 并且还指示无法确定网站的IP地址。

package com.java.w3schools.blog.exceptions; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class UnknownHostExceptionException { public static void main(String[] args) throws IOException { String hostname = " http://javaprogram.comm " ; URL url = null ; try { url = new URL(hostname); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.getResponseCode(); } }

输出:

Exception in thread "main" Exception in thread java.net.UnknownHostException: javaprogram.comm at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java: 220 ) at java.base/java.net.Socket.connect(Socket.java: 591 ) at java.base/java.net.Socket.connect(Socket.java: 540 ) at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java: 182 ) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java: 474 ) at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java: 569 ) at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java: 242 ) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java: 341 ) at java.base/sun.net.www.http.HttpClient.New(HttpClient.java: 362 ) at java.base/sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java: 1242 ) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java: 1181 ) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java: 1075 ) at java.base/sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java: 1009 ) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java: 1581 ) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java: 1509 ) at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java: 527 ) at com.java.w3schools.blog.exceptions.UnknownHostExceptionException.main(UnknownHostExceptionException.java: 21 )

在上面的程序中错误地添加了comm而不是com。 因此,它产生了错误。

3.如何预防?

预防胜于治疗。 始终将预防放在首位,而不是面对问题。

以下是预防的重要提示。

仔细检查主机名 –检查域名的拼写并修剪多余的空格是很好的。

检查DNS设置 –在运行应用程序之前,使用计算机上的ping hostname命令确保DNS服务器已启动并正在运行。 如果主机名是新的,则需要等待一段时间才能访问DNS服务器。

4.如何处理?

UnknownHostException扩展了IOException ,这是一个已检查的异常。 类似于任何其他检查的异常,我们必须将其抛出或用try-catch块将其包围。

让我们在示例中处理异常:

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

Thread.sleep(5000) –睡眠一段时间,然后重试。 如果存在网络问题,这应该可以解决该问题。 代替睡眠不要使用interrupted()方法。

发生UnknownHostException时,关闭连接是一个好习惯。 许多浪费的打开连接会导致(内存泄漏)应用程序用尽内存。

5.结论

在本文中,我们已经看到了什么是UnknownHostException以及如何产生和处理它? 并且还看到了预防这种情况的最佳方法。

GitHub示例代码

API

翻译自: https://www.javacodegeeks.com/2020/04/java-unknownhostexception-invalid-hostname-for-server-how-to-fix-it.html

总结

以上是生活随笔为你收集整理的Java UnknownHostException –服务器的无效主机名–如何解决?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。