如何捕获"Connection reset by peer"的IOException?

8
分析字符串消息看起来很糟糕。或者这个异常不应该被捕获?
java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)

1
请提供更多细节,包括堆栈跟踪或代码。 - Serdar Dogruyol
2个回答

4
你需要捕获 IOException 异常,并解析字符串。据我所知,除此之外没有更具体的异常需要捕获。
或者捕获 SocketException 并再次解析字符串。
这里是 javadoc(版本 6)的类树 (链接在此处)。正如你所看到的,SocketException 是在连接重置时抛出的最专业的异常。

2
这不是SocketException,而是IOException。因此,捕获SocketException将无效。如果不是荒谬的话,你的最后一句话完全是错误的。 - user207421
抛出以指示底层协议存在错误,例如TCP错误的异常。(在javadoc中SocketException的描述) 连接重置是一种TCP错误(错误代码10054)。 - lucian.pantelimon
无关紧要。当您遇到文本为“连接重置”的异常时,它是IOException而不是SocketException。试试看。您不能仅从Javadoc类层次结构中推断出它。 - user207421

1
JVM 对错误的真实原因并不关心,因此无论什么情况下(适配器断开连接、超时、ICMP 错误等),它都会抛出一个“通用”的 IOException。只有人类可读的字符串描述了错误,你对此无能为力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接