当遇到 SocketException(或者当您使用 BufferedReader 作为套接字时遇到 IOException)时,整个连接是否应该被视为错误?
我或多或少想知道在读取或写入套接字时是否会发生任何“非致命”异常,即发生但套接字仍然可用的异常。
最佳答案
SocketException子类的javadoc汇编表明您无法从此类异常中恢复并重用套接字。
BindException 表示尝试将套接字绑定(bind)到本地地址和端口时发生错误。通常,端口正在使用中,或者无法分配请求的本地地址。
ConnectException 表示尝试将套接字连接到远程地址和端口时发生错误。通常,连接被远程拒绝(例如,没有进程正在监听远程地址/端口)。
NoRouteToHostException 表示尝试将套接字连接到远程地址和端口时发生错误。通常,由于防火墙介入或中间路由器关闭,无法访问远程主机。
PortUnreachableException 表示已在连接的数据报上收到 ICMP 端口不可达消息。
SocketException本身:抛出该异常表示底层协议(protocol)出现错误,例如TCP错误。
因此我会说是的,没有办法继续,因为 TCP 已经尝试确保从传输问题中恢复。
关于java - 所有 SocketException 都是 "fatal"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126642/