当完全遇到SocketException时(或者当您对套接字使用BufferedReader时遇到IOException),是否应该将整个连接视为错误?

我或多或少想知道在读取或写入套接字时是否会发生任何“非致命”异常,虽然发生了异常,但该套接字仍然可用。

最佳答案

SocketException子类的javadoc的编译显示,您无法从此类异常中恢复并重用套接字。

  • BindException
    表示尝试将套接字绑定(bind)到本地地址和端口时发生错误。通常,该端口正在使用中,或者无法分配所请求的本地地址。
  • ConnectException
    表示尝试将套接字连接到远程地址和端口时发生错误。通常,远程拒绝连接(例如,没有进程在远程地址/端口上监听)。
  • NoRouteToHostException
    表示尝试将套接字连接到远程地址和端口时发生错误。通常,由于存在中间防火墙或中间路由器已关闭,因此无法访问远程主机。
  • PortUnreachableException
    表示已在连接的数据报上收到“ICMP端口不可达”消息。

  • SocketException本身:抛出该异常表示基础协议(protocol)中存在错误,例如TCP错误。

    因此,我要说是,没有办法继续,因为TCP已经试图确保从传输问题中恢复过来。

    关于java - 所有的SocketExceptions都是 “fatal”吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10126642/

    10-10 19:25