Java Android应用程序中的IndexOutOfBoundsException
我的android应用程序在以下代码部分崩溃:Java Android应用程序中的IndexOutOfBoundsException,java,android,sockets,exception,stream,Java,Android,Sockets,Exception,Stream,我的android应用程序在以下代码部分崩溃: ois = new ObjectInputStream(socket.getInputStream()); Object obj = ois.readObject(); 调用函数readObject()时 它工作了几个小时没有出现问题,然后发生了这样的情况: 07-03 07:52:34.409: E/AndroidRuntime(1600): FATAL EXCEPTION: Thread-215 07-03 07:52:34.409: E/A
ois = new ObjectInputStream(socket.getInputStream());
Object obj = ois.readObject();
调用函数readObject()时
它工作了几个小时没有出现问题,然后发生了这样的情况:
07-03 07:52:34.409: E/AndroidRuntime(1600): FATAL EXCEPTION: Thread-215
07-03 07:52:34.409: E/AndroidRuntime(1600): java.lang.IndexOutOfBoundsException: Invalid index 1937902936, size is 28
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.util.ArrayList.get(ArrayList.java:304)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.registeredObjectRead(ObjectInputStream.java:2157)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readCyclicReference(ObjectInputStream.java:833)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:692)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1799)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1999)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1956)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.util.concurrent.CopyOnWriteArrayList.readObject(CopyOnWriteArrayList.java:766)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.lang.reflect.Method.invokeNative(Native Method)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.lang.reflect.Method.invoke(Method.java:511)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1354)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1266)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1851)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1999)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1956)
07-03 07:52:34.409: E/AndroidRuntime(1600): at com.vittorio.floaty.AcceptThread.run(AcceptThread.java:80)
07-03 07:52:34.409: E/AndroidRuntime(1600): at java.lang.Thread.run(Thread.java:856)
这怎么会发生?我是说指数太大了,没有什么意义。无论如何,我正在交换一个包含ArrayList的序列化对象。似乎您读取了一个错误的对象。嗯,可能是连接链接上发生了错误,接收方读取对象时遇到了问题?或者可能是难以检测到有关反序列化的错误。请检查发送方是否已启动通信notArrayList具有自定义的读写对象方法。如果你调试有可能你会明白为什么。。。