我正在使用Java Smack API开发应用程序。我使用PacketCollector.java类' nextResult()方法接收下一个传入消息。 (根据文档,这种方法会阻塞,直到有输入。)
我有一个问题,如果连接突然断开(例如,通过网络断开连接等),我怎么知道或如何捕获异常?
答案 0 :(得分:1)
nextResult()
调用将一直等到与过滤器匹配的数据包到达。查看源代码,我认为只要您使用相同的连接实例,它甚至会在断开连接并重新连接后等待。
您不应该使用nextResult()
,而是使用nextResult(long)
。如果由于某种原因断开连接,nextResult()
不会抛出异常,并且没有充分的理由使用nextResult()
而不是nextResult(long)
具有合理的超时值。