-->

ArrayIndexOutOfBoundsException异常在Android的KXmlParse

2019-06-27 01:22发布

我在Android上做常规XML解析,极少我得到这个例外,只有在特定的手机。 一直没能得到这个问题的根源。 没有任何人有一个想法,什么可能导致此?

    java.lang.ArrayIndexOutOfBoundsException: src.length=8192 srcPos=1 dst.length=8192 dstPos=0 length=-1
    at java.lang.System.arraycopy(Native Method)
    at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1489)
    at org.kxml2.io.KXmlParser.skip(KXmlParser.java:1574)
    at org.kxml2.io.KXmlParser.parseStartTag(KXmlParser.java:1049)
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:369)
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)

Answer 1:

我有一个类似的异常。 在我的情况下,XML已经下载并保存到SD。 当我打开该文件时,我看到它切出“中间句”,因为它是。 它看起来像有过在下载文件中的错误。 删除文件并重新下载固定在这个实例中的问题,但要防止同一类型的未来的问题,我检查ArrayIndexOutOfBoundsException异常读取XML时,并承担该文件已损坏时,抓住一个。

这显然只是一个创可贴解决一个定义模糊的问题的时刻。 如果我的数字多出,我会更新我的答案。



Answer 2:

我发现了一个bug,修复了Android 4.4系统的提这样的: 更改61530

所以,你应该得到适当的例外是: 未结束元素含量规格 ,这意味着意外EOF。



Answer 3:

下层(KXML)被不正确地抛出未经检查的异常,当它遇到坏XML。 要解决此,使用XmlPullParser时,更换

try {
    // use XmlPullParser
}
catch (XmlPullParserException ex) { ... }

try {
    // use XmlPullParser
}
catch (Exception ex) { ... }


文章来源: ArrayIndexOutOfBoundsException in android's KXmlParser