Java網(wǎng)絡(luò)編程從入門(mén)到精通(19):套接字(Socket)的異常
本文為原創(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異常:
Socket socket2 = 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)介
《Android開(kāi)發(fā)完全講義(第2版)》(本書(shū)版權(quán)已輸出到臺(tái)灣)
http://product.dangdang.com/product.aspx?product_id=22741502
《Android高薪之路:Android程序員面試寶典 》http://book.360buy.com/10970314.html
新浪微博:http://t.sina.com.cn/androidguy 昵稱(chēng):李寧_Lining
posted on 2009-06-02 08:19 銀河使者 閱讀(3257) 評(píng)論(2) 編輯 收藏 所屬分類(lèi): java 、 原創(chuàng) 、網(wǎng)絡(luò)編程