我从我发布的 Android应用程序向我报告了一个有趣的问题.我有一个二维数组,我正在迭代使用两个for循环,如下所示: for (int i = 0; i arr.length; ++i){ for (int j = 0; j arr[i].length; ++j) { if (arr[i][
for (int i = 0; i < arr.length; ++i) { for (int j = 0; j < arr[i].length; ++j) { if (arr[i][j] != 0) // does stuff } }
问题是,不知何故,arr [i] [j]!= 0正在抛出一个ArrayIndexOutOfBoundsException.但很少.我有成千上万的人每天使用该应用程序,并获得可能二十次强制关闭报告.
这是我无法避免的事情,可能是手机内存的问题等,还是我能做的事情,我还没有想到呢?谢谢.
如果您有一个线程读取数组而第二个线程正在改变它们,则此异常并非不可能.具体来说,如果变异线程正在改变数组切片的大小;例如array[i] = new Whatever[array[i].length - 1];