1

我有一个程序有时会遇到errorjava.net.SocketException。有没有一种方法可以让客户端程序在(且仅当)遇到此错误以“处理”错误时执行一些代码?完整的错误是

java.net.SocketException: Software caused connection abort: socket write error

这是我现在所拥有的摘要。

public void run()  {
    try {
        //some code that causes the SocketException 
    }

    catch (SocketException e) {
    System.out.println("I recognize the SocketException");
    }
}

但是,尽管出现错误,它仍然不会打印该行。

这是完整的错误

java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
    at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source)  
    at java.io.ObjectOutputStream.writeNonProxyDesc(Unknown Source)
    at java.io.ObjectOutputStream.writeClassDesc(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at (...).java:61)
    at (...).java:164)
4

1 回答 1

1

这取决于是客户端还是服务器抛出异常。

无论哪种方式,您都应该能够在代码周围添加一个 try-catch 块。

try {
   //code
} catch (SocketException e) {
   // Handle the error
}

如果服务器抛出错误并且您希望客户端处理这种情况,则客户端应该由于连接丢失而抛出异常(这就是这个异常的样子)。或者,如果服务器抛出错误但没有崩溃,只需让服务器向客户端发送一些信号表明发生了错误。

不管怎样,如果有更多的信息,我可以给你一个更好的回应。

于 2013-07-31T19:50:07.000 回答