确定SocketException是由连接丢失引起的

时间:2019-06-24 10:57:03

标签: java sockets

假设一些代码可以在套接字上正常工作:创建客户端和服务器套接字,写入SocketOutputStream,从SocketInputStream读取等等。当然,底层的套接字方法可能会抛出SocketException及其派生类。

我区分两种类型的错误。预期的错误-我们总是应该预期网络故障,并通过重新连接或用户可读的错误消息对它们做出反应。预期错误的重要示例是TCP连接丢失。意外错误-肯定表明我们软件存在错误的错误,应仔细记录此类堆栈跟踪记录,甚至应终止整个应用程序。

我没有找到一种可靠的方法来区分由连接丢失引起的SocketException与任何其他套接字错误。 SocketException中没有错误代码,也没有子类。 java.net包中的所有方法仅抛出SocketException并显示不同的错误消息:

是否有任何方法可以确定特定的SocketException是由丢失的TCP连接引起的,还是唯一的方法是分析错误消息?如果是这样,也许存在执行该检查的库?还是我做错了什么,应该/永远不要忽略任何与之有关的SocketExceptions问题?

0 个答案:

没有答案