我有一个有时会遇到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)
答案 0 :(得分:1)
这取决于客户端或服务器是否是抛出异常的那个。
无论哪种方式,您都应该能够在代码周围添加try-catch块。
try {
//code
} catch (SocketException e) {
// Handle the error
}
如果服务器抛出错误并且您希望客户端处理这种情况,则客户端应该因为连接丢失而抛出异常(这就是此异常的样子)。或者,如果服务器抛出错误但没有崩溃,只需让服务器向客户端发送一个错误信号。
无论哪种方式,只要获得更多信息,我都可以给你更好的回复。