隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
          數(shù)據(jù)加載中……

          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異常。

          Socket socket = new Socket("www.ptpress.com.cn"1234);
          • public class BindException extends SocketException

             這個(gè)異常在多個(gè)Socket或ServerSocket對(duì)象綁定在同一個(gè)端口,而且未打開(kāi)SO_REUSEADDR選項(xiàng)時(shí)發(fā)生。如下面的四條語(yǔ)句將拋出一個(gè)BindException異常:

          Socket socket1 = new Socket();
          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異常:

          Socket socket1 = new Socket("www.ptpress123.com.cn"80);
          • 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ò)編程

          評(píng)論

          # re: Java網(wǎng)絡(luò)編程從入門(mén)到精通(19):套接字(Socket)的異常[未登錄](méi)  回復(fù)  更多評(píng)論   

          很好的個(gè)人主頁(yè)!!
          有時(shí)間我會(huì)常來(lái)!!!
          2009-06-04 11:07 | Java愛(ài)好者

          # re: Java網(wǎng)絡(luò)編程從入門(mén)到精通(19):套接字(Socket)的異常[未登錄](méi)  回復(fù)  更多評(píng)論   

          不知道這個(gè)網(wǎng)絡(luò)編程是否還有下文!!!!
          期待................
          2009-06-04 11:08 | Java愛(ài)好者
          主站蜘蛛池模板: 余干县| 佛学| 淅川县| 光山县| 麻城市| 阜阳市| 财经| 天祝| 明星| 东阳市| 寿宁县| 上犹县| 麻栗坡县| 漾濞| 乌苏市| 澄江县| 华坪县| 竹山县| 铜山县| 沁源县| 昌江| 来宾市| 土默特右旗| 南京市| 浑源县| 牟定县| 金门县| 黔南| 佛山市| 镇沅| 扬州市| 太康县| 新竹县| 兰考县| 阳西县| 富宁县| 融水| 宕昌县| 涞源县| 乌拉特中旗| 桃江县|