BindException和ConnectException都是SocketException的直接子类。ConnectException在SocketTimeoutException和ConnectException简介已介绍,下面介绍其余两个异常。
BindException:
类声明:public class BindException extends SocketException:试图将套接字绑定到本地地址和端口时发生错误的情况下,抛出此异常。这些错误通常发生在端口正在使用中或无法分配所请求的本地地址时。
注意,所有异常都是Throwable子类,而Throwable实现了Serializable接口。所以所有异常都实现了Serializable接口的。
类层次结构:
构造方法:
①public BindException(String msg) 构造一个新的 BindException,使其具有关于绑定错误产生原因的指定详细消息。详细消息指的是一个具体描述此错误的 String。
②public BindException() 构造不带详细消息的新 BindException。
SocketException:
类声明:public class SocketException extends IOException 抛出此异常指示在底层协议中存在错误,如 TCP 错误。
类层次:
直接已知子类:BindException, ConnectException, NoRouteToHostException, PortUnreachableException
构造方法:
①public SocketException(String msg) 构造带指定详细消息的新 SocketException
。
②public SocketException() 构造不带详细消息的新 SocketException
。
几个常见异常比较:
①ConnectException:connection refused connect. 抛出此类异常,表示无法连接,也就是说当前主机不存在
②BindException:address already in use 抛出此类异常,表示端口已经被占用
③SocketException:socket is closed. 抛出此类异常,表示连接正常关闭,也就是说另一端主动关闭连接
④SocketException:connection reset.抛出此类异常,表示一端关闭连接,而另一端此时在读数据
⑤SocketException:connect reset by peer.抛出此类异常,表示一端关闭连接,而另一端此时在发送数据
⑥SocketException:broken pipe.抛出此类异常,表示连接已关闭,但还继续使用(也就是读/写操作)此连接
⑦EOFException 抛出此类异常,表示连接丢失,也就是说网络连接的另一端非正常关闭连接(可能是主机断电、网线出现故障等导致)