【问题标题】:Why nullpointerexception when parsing xml in android application?为什么在android应用程序中解析xml时出现nullpointerexception?
【发布时间】:2011-03-26 15:30:55
【问题描述】:

我们有一个 Android 应用程序在 android 2.1 之前运行良好,但是当我们尝试为 android 2.2 发布它时,我们得到一个空指针异常。当我们在以下代码行解析 xml 时会发生这种情况:

((node) getText.item(0).getNodeValue();

感谢您的帮助!

【问题讨论】:

    标签: java android nullpointerexception


    【解决方案1】:

    NullPointerException 可能会在几种不同的情况下抛出。来自文档:

    当应用程序在需要对象的情况下尝试使用null 时抛出。其中包括:

    • 调用null 对象的实例方法。
    • 访问或修改null 对象的字段。
    • null 的长度视为一个数组。
    • 像数组一样访问或修改null 的槽。
    • null 视为 Throwable 值。

    应用程序应抛出此类的实例以指示 null 对象的其他非法用途。

    与任何异常一样,您应该仔细检查堆栈跟踪,看看是否有任何有用的信息说明它被抛出的原因。如果确实是由非法访问null 引用引起的,就好像它是一个真实的对象一样,那么调试这类问题的一般方法是分解这样的表达式:

    // chained method invokations, can be hard to debug
    var.method1().method2(arg).method3()
    

    分成多个这样的语句:

    // broken into multiple assignments
    var1 = var.method1();
    var2 = var1.method2();
    var3 = var2.method3();
    

    现在,当NullPointerException 出现时,您将知道抛出它的链的确切部分,即varnull

    识别 where 部分可以快速缩小对 why 的搜索范围。如果var 本身是null,则将其追溯到以前的分配。如果varNnull,那么查看methodN() 的文档,看看在什么情况下它可以返回null

    如果null 来自容器/可变数据结构上的get-type 操作,那么问题就不再那么精确地定位了,您必须弄清楚对应的set 发生在哪里.如果null 从来都不是这个容器的合法值,那么也许它应该在set 期间执行null-检查:最好早点而不是晚点导致失败,因为错误的来源可以更本地化很容易。

    相关问题

    在调试NullPointerException:

    关于投掷NullPointerException 的特定于应用程序的行为:

    关于其他对学习有指导意义的NullPointerException 场景:

    null 本身:

    【讨论】:

      【解决方案2】:

      这是一个格式错误的代码。请纠正。然后确保您没有在 null 值上调用任何方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        • 2015-01-01
        • 1970-01-01
        相关资源
        最近更新 更多