本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!
上一篇:
Java網(wǎng)絡(luò)編程從入門(mén)到精通(18):Socket類(lèi)的getter和setter方法(2)
在Socket類(lèi)中有很多方法在聲明時(shí)使用throws拋出了一些異常,這些異常都是IOException的子類(lèi)。在Socket類(lèi)的方法中拋出最多的就是SocketException,其余還有七個(gè)異常可供Socket類(lèi)的方法拋出。這些異常的繼承關(guān)系如圖1所示。其中灰色背景框所描述的例外就是Socket類(lèi)的方法可能拋出的異常。

圖1 異常類(lèi)繼承關(guān)系圖
-
public class IOException extends Exception
這個(gè)異常是所有在Socket類(lèi)的方法中拋出的異常的父類(lèi)。因此,在使用Socket類(lèi)時(shí)只要捕捉(catch)這個(gè)異常就可以了;當(dāng)然,為了同時(shí)捕捉其它類(lèi)中的方法的異常,也可以直接捕捉Exception。
- public class SocketException extends IOException
這個(gè)異常在Socket類(lèi)的方法中使用得最頻繁。它也代表了所有和網(wǎng)絡(luò)有關(guān)的異常。但如果要想知道具體發(fā)生的哪一類(lèi)的異常,就需要捕捉更具體的異常了。
- public class ConnectException extends SocketException
ConnectException異常通常發(fā)生在由于服務(wù)器忙而未響應(yīng)或是服務(wù)器相應(yīng)的監(jiān)聽(tīng)端口未打開(kāi)。如下面的語(yǔ)句將拋出一個(gè)ConnectException異常。
- public class BindException extends SocketException
這個(gè)異常在多個(gè)Socket或ServerSocket對(duì)象綁定在同一個(gè)端口,而且未打開(kāi)SO_REUSEADDR選項(xiàng)時(shí)發(fā)生。如下面的四條語(yǔ)句將拋出一個(gè)BindException異常:
Socketsocket2 = new Socket();
socket1.bind( new InetSocketAddress( " 127.0.0.1 " , 1234 ));
socket2.bind( new InetSocketAddress( " 127.0.0.1 " , 1234 ));
- public class NoRouteToHostException extends SocketException
這個(gè)異常在遇到防火墻或是路由無(wú)法找到主機(jī)的情況下發(fā)生。
- public class UnknownHostException extends IOException
這個(gè)異常在域名不正確時(shí)被拋出。如下面的語(yǔ)句將拋出一個(gè)UnKnownHostException異常:
- public class ProtocolException extends IOException
這個(gè)異常并不經(jīng)常被拋出。由于不明的原因,TCP/IP的數(shù)據(jù)包被破壞了,這時(shí)將拋出ProtocolException異常。
- public class SocketTimeoutException extends InterruptedIOException
如果在連接超時(shí)和讀取數(shù)據(jù)超時(shí)時(shí)間過(guò)后,服務(wù)器仍然未響應(yīng),connect或read方法將拋出SocketTimeoutException異常。
下一篇:
Java網(wǎng)絡(luò)編程從入門(mén)到精通(20):HTTP協(xié)議簡(jiǎn)介
國(guó)內(nèi)最棒的Google Android技術(shù)社區(qū)(eoeandroid),歡迎訪問(wèn)!
《銀河系列原創(chuàng)教程》 發(fā)布
《Java Web開(kāi)發(fā)速學(xué)寶典》 出版,歡迎定購(gòu)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
