代码之家  ›  专栏  ›  技术社区  ›  Guzba

Android /Java稀有,貌似不可能引起异常力关闭

  •  3
  • Guzba  · 技术社区  · 15 年前

    我有一个有趣的问题从我发布的Android应用程序中报告给我。我有一个二维数组,我正在使用two for循环迭代,如下所示:

    for (int i = 0; i < arr.length; ++i)
    {
        for (int j = 0; j < arr[i].length; ++j)
        {
            if (arr[i][j] != 0)
                // does stuff
        }
    }
    

    问题是,不知何故,我[我][j]!=0正在引发ArrayIndexOutOfBoundsException。但很少。我每天都有成千上万的人使用这个应用程序,可能会得到20份强制关闭报告。

    这是我无法避免的事情,可能是手机内存问题,等等,还是有什么我还没想到的事情可以做?谢谢。

    1 回复  |  直到 15 年前
        1
  •  7
  •   Stephen C    15 年前

    如果有一个线程在第二个线程改变数组时读取数组,则不可能出现此异常。具体来说,如果变化的线程正在改变数组切片的大小;例如

    array[i] = new Whatever[array[i].length - 1];