如果使用Java Smack API断开连接,如何在使用nextResult()时知道或捕获异常?

时间:2012-09-01 19:22:08

标签: java xmpp smack

我正在使用Java Smack API开发应用程序。我使用PacketCollector.java类' nextResult()方法接收下一个传入消息。 (根据文档,这种方法会阻塞,直到有输入。)

http://www.igniterealtime.org/builds/smack/docs/latest/javadoc/org/jivesoftware/smack/PacketCollector.html

我有一个问题,如果连接突然断开(例如,通过网络断开连接等),我怎么知道或如何捕获异常?

1 个答案:

答案 0 :(得分:1)

nextResult()调用将一直等到与过滤器匹配的数据包到达。查看源代码,我认为只要您使用相同的连接实例,它甚至会在断开连接并重新连接后等待。

您不应该使用nextResult(),而是使用nextResult(long)。如果由于某种原因断开连接,nextResult()不会抛出异常,并且没有充分的理由使用nextResult()而不是nextResult(long)具有合理的超时值。