Java 如何接住破裂的管套?
我已经使用套接字编写了一个Java客户机-服务器应用程序。我正在使用Java 如何接住破裂的管套?,java,sockets,ioexception,eofexception,Java,Sockets,Ioexception,Eofexception,我已经使用套接字编写了一个Java客户机-服务器应用程序。我正在使用ObjectOutputStream的writeUnshared()方法和ObjectInputStream的readObject()方法 现在,我想检测连接何时中断以重新连接(例如Wifi信号丢失时)。目前,对于ObjectInputStream我正在捕获EOFEException,对于ObjectOutputStream我正在捕获IOException以检测管道是否损坏 这是正确的还是我应该为两个流捕获IOException
ObjectOutputStream的writeUnshared()
方法和ObjectInputStream的readObject()
方法
现在,我想检测连接何时中断以重新连接(例如Wifi信号丢失时)。目前,对于ObjectInputStream
我正在捕获EOFEException
,对于ObjectOutputStream
我正在捕获IOException
以检测管道是否损坏
这是正确的还是我应该为两个流捕获IOException
?您可以通过,它建议为所有常见的I/O相关异常捕获IOException
或者你可以自己测试
或者您可以使用,这表明当使用“块数据”模式时,只要没有足够的字节来构造完整对象,序列化就会使用EOFEException。然而,这并不能涵盖所有断开连接的情况
考虑到所有因素,我建议使用IOException。您应该捕获两个流的IOException
。只有当对等方关闭且结果传输成功时,您才会获得EOFEException
。不是因为网络故障。除了SocketTimeoutException
之外的所有IOException
对连接都是致命的。