我正在尝试通过 Android 应用程序中的套接字连接读取 JSON-Strings,但突然开始收到我无法解释的 StringIndexOutOfBoundsExceptions(屏蔽了包名称中的一些标识符):
java.lang.StringIndexOutOfBoundsException: length=10000; regionStart=0; regionLength=-1
at java.lang.StringFactory.newStringFromChars(StringFactory.java:218)
at **.***********.SocketHandler.listenForMessages(SocketHandler.java:48)
其中(从第 45 行开始)SocketHandler.listenForMessages() 读取
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
char[] buffer = new char[READ_BUFFER];
int messageLength = reader.read(buffer, 0, READ_BUFFER);
String message = new String(buffer, 0, messageLength);
我还没有触及代码的那部分 - 几周前它没有问题 - 当我突然得到这个异常时,即使将 READ_BUFFER 提高到比接收到的消息应该大得多(这里是 10k)。
指标
length=10000; regionStart=0; regionLength=-1
让我假设问题源于阅读空消息,但我无法弄清楚为什么问题没有早点出现。有什么帮助吗?