【问题标题】:ArrayIndexOutOfBoundsException in android's KXmlParserandroid 的 KXmlParser 中的 ArrayIndexOutOfBoundsException
【发布时间】:2012-08-15 09:38:53
【问题描述】:

我在 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)

【问题讨论】:

    标签: android xmlpullparser kxml2


    【解决方案1】:

    我也有类似的例外。就我而言,xml 已下载并保存到 SD。当我打开文件时,我看到它剪掉了“中间句子”,就像它一样。下载文件时似乎出现了错误。删除文件并重新下载解决了这种情况下的问题,但为了防止将来出现相同类型的问题,我在读取 xml 时检查 ArrayIndexOutOfBoundsException,并假设文件在捕获时已损坏。

    这显然只是对目前定义模糊的问题的临时解决方案。如果我知道更多,我会更新我的答案。

    【讨论】:

      【解决方案2】:

      我发现了一个针对 Android 4.4 的错误修复,其中提到了这一点:Change 61530

      因此,您应该得到的正确例外是:未终止的元素内容规范,意思是意外的 EOF。

      【讨论】:

        【解决方案3】:

        底层 (kxml) 在遇到错误的 xml 时错误地抛出未经检查的异常。要解决此问题,请在使用 XmlPullParser 时替换

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          • 2014-11-03
          • 1970-01-01
          相关资源
          最近更新 更多