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

圖1 異常類繼承關系圖
-
public class IOException extends Exception
這個異常是所有在Socket類的方法中拋出的異常的父類。因此,在使用Socket類時只要捕捉(catch)這個異常就可以了;當然,為了同時捕捉其它類中的方法的異常,也可以直接捕捉Exception。
- public class SocketException extends IOException
這個異常在Socket類的方法中使用得最頻繁。它也代表了所有和網絡有關的異常。但如果要想知道具體發生的哪一類的異常,就需要捕捉更具體的異常了。
- public class ConnectException extends SocketException
ConnectException異常通常發生在由于服務器忙而未響應或是服務器相應的監聽端口未打開。如下面的語句將拋出一個ConnectException異常。
- public class BindException extends SocketException
這個異常在多個Socket或ServerSocket對象綁定在同一個端口,而且未打開SO_REUSEADDR選項時發生。如下面的四條語句將拋出一個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
這個異常在遇到防火墻或是路由無法找到主機的情況下發生。
- public class UnknownHostException extends IOException
這個異常在域名不正確時被拋出。如下面的語句將拋出一個UnKnownHostException異常:
- public class ProtocolException extends IOException
這個異常并不經常被拋出。由于不明的原因,TCP/IP的數據包被破壞了,這時將拋出ProtocolException異常。
- public class SocketTimeoutException extends InterruptedIOException
如果在連接超時和讀取數據超時時間過后,服務器仍然未響應,connect或read方法將拋出SocketTimeoutException異常。
下一篇:
Java網絡編程從入門到精通(20):HTTP協議簡介
國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!
《銀河系列原創教程》 發布
《Java Web開發速學寶典》 出版,歡迎定購
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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