Java UnknownHostException –服务器的无效主机名–如何解决?
An UnknownHostException的快速指南,如果在為遠(yuǎn)程方法調(diào)用創(chuàng)建到遠(yuǎn)程主機(jī)的連接時(shí)發(fā)生java.net.UnknownHostException,則會(huì)拋出該快速指南。 UnknownHostException的預(yù)防方法。
1.簡(jiǎn)介
在本教程中,我們將學(xué)習(xí)什么是UnknownHostException以及產(chǎn)生它的原因 。 并且學(xué)習(xí)如何預(yù)防 。 UnknownHostException是一個(gè)常見的異常,它將顯示防止該異常的最佳方法。
層次結(jié)構(gòu):
java.lang.Object java.lang.Throwable java.lang.Exception java.io.IOException java.rmi.RemoteException java.rmi.UnknownHostException2.何時(shí)引發(fā)異常?
當(dāng)且僅當(dāng)域名存在問題或鍵入錯(cuò)誤時(shí),才會(huì)引發(fā)UnknownHostException 。 并且還指示無法確定網(wǎng)站的IP地址。
輸出:
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 )在上面的程序中錯(cuò)誤地添加了comm而不是com。 因此,它產(chǎn)生了錯(cuò)誤。
3.如何預(yù)防?
預(yù)防勝于治療。 始終將預(yù)防放在首位,而不是面對(duì)問題。
以下是預(yù)防的重要提示。
仔細(xì)檢查主機(jī)名 –檢查域名的拼寫并修剪多余的空格是很好的。
檢查DNS設(shè)置 –在運(yùn)行應(yīng)用程序之前,使用計(jì)算機(jī)上的ping hostname命令確保DNS服務(wù)器已啟動(dòng)并正在運(yùn)行。 如果主機(jī)名是新的,則需要等待一段時(shí)間才能訪問DNS服務(wù)器。
4.如何處理?
UnknownHostException擴(kuò)展了IOException ,這是一個(gè)已檢查的異常。 類似于任何其他檢查的異常,我們必須將其拋出或用try-catch塊將其包圍。
讓我們?cè)谑纠刑幚懋惓?#xff1a;
try { con.getResponseCode(); } catch (UnknownHostException e) { con.disconnect(); }Thread.sleep(5000) –睡眠一段時(shí)間,然后重試。 如果存在網(wǎng)絡(luò)問題,這應(yīng)該可以解決該問題。 代替睡眠不要使用interrupted()方法。
發(fā)生UnknownHostException時(shí),關(guān)閉連接是一個(gè)好習(xí)慣。 許多浪費(fèi)的打開連接會(huì)導(dǎo)致(內(nèi)存泄漏)應(yīng)用程序用盡內(nèi)存。
5.結(jié)論
在本文中,我們已經(jīng)看到了什么是UnknownHostException以及如何產(chǎn)生和處理它? 并且還看到了預(yù)防這種情況的最佳方法。
GitHub示例代碼
API
翻譯自: https://www.javacodegeeks.com/2020/04/java-unknownhostexception-invalid-hostname-for-server-how-to-fix-it.html
總結(jié)
以上是生活随笔為你收集整理的Java UnknownHostException –服务器的无效主机名–如何解决?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10磅是多少斤 磅和斤的换算公式是什么
- 下一篇: java美元兑换,(Java实现) 美元