我正在使用 Java Smack API 开发一个应用程序。我使用 PacketCollector.java 类的 nextResult() 方法来接收下一条传入消息。 (根据文档,此方法会阻塞,直到有输入。)
我有一个问题,如果连接突然中断(例如,由于网络断开等),我如何知道或如何捕获异常?
最佳答案
nextResult()
调用将等待,直到与过滤器匹配的数据包到达。查看源代码,我认为只要您使用相同的连接实例,它甚至会在断开连接并重新连接后等待。
您不应该真正使用nextResult()
,而是使用nextResult(long)
。如果连接因任何原因断开,nextResult()
不会引发异常,并且没有充分的理由使用 nextResult()
而不是具有合理超时值的 nextResult(long)
。
关于java - 如果使用 Java Smack API 连接中断,如何在使用 nextResult() 时了解或捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230679/