程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java網絡編程從入門到精通(19):套接字(Socket)的異常

Java網絡編程從入門到精通(19):套接字(Socket)的異常

編輯:關於JAVA

在Socket類中有很多方法在聲明時使用throws拋出了一些異常,這些異常都是IOException的子類。在Socket類的方法中拋出最多的就是SocketException,其余還有七個異常可供Socket類的方法拋出。這些異常的繼承關系如圖1所示。其中灰色背景框所描述的例外就是Socket類的方法可能拋出的異常。

public class IOException extends Exception

這個異常是所有在Socket類的方法中拋出的異常的父類。因此,在使用Socket類時只要捕捉(catch)這個異常就可以了;當然,為了同時捕捉其它類中的方法的異常,也可以直接捕捉Exception。

public class SocketException extends IOException

這個異常在Socket類的方法中使用得最頻繁。它也代表了所有和網絡有關的異常。但如果要想知道具體發生的哪一類的異常,就需要捕捉更具體的異常了。

public class ConnectException extends SocketException

ConnectException異常通常發生在由於服務器忙而未響應或是服務器相應的監聽端口未打開。如下面的語句將拋出一個ConnectException異常。

Socket socket = new Socket("www.ptpress.com.cn", 1234);

public class BindException extends SocketException

這個異常在多個Socket或ServerSocket對象綁定在同一個端口,而且未打開SO_REUSEADDR選項時發生。如下面的四條語句將拋出一個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

這個異常在遇到防火牆或是路由無法找到主機的情況下發生。

public class UnknownHostException extends IOException

這個異常在域名不正確時被拋出。如下面的語句將拋出一個UnKnownHostException異常:

Socket socket1 = new Socket("www.ptpress123.com.cn", 80);

public class ProtocolException extends IOException

這個異常並不經常被拋出。由於不明的原因,TCP/IP的數據包被破壞了,這時將拋出ProtocolException異常。

public class SocketTimeoutException extends InterruptedIOException

如果在連接超時和讀取數據超時時間過後,服務器仍然未響應,connect或read方法將拋出SocketTimeoutException異常。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved