【问题标题】:Exception in thread "main" java.lang.NullPointerException线程“主”java.lang.NullPointerException 中的异常
【发布时间】:2011-09-07 09:21:03
【问题描述】:

今天早上我遇到了一个奇怪的错误NullPointerException

String a,b;

a = this.getA();
b = this.getB();

if(a == null || a.equals(""))
    a = "unknown a";
if(b == null || b.equals(""))
    b = "unknown b";

System.out.println("a = " + a + " & " + "b = " b);
// the output is : a = a & b = unknown b

process(a,b); // The error occure here

此时我得到:Exception in thread "main" java.lang.NullPointerException

这里有什么问题?!

【问题讨论】:

  • 请发布您的真实代码,并指出错误所在的行。 (字符串没有eqauls 方法。)实际的堆栈跟踪(至少是它的顶部)可能很有用。
  • 从哪里得到 NullPointerException? println 消息告诉你什么?当您使用调试器单步执行代码时,您会看到什么?
  • 编译吗? eqauls() 不存在。
  • 你说错误发生在进程中,所以给我们看进程中的代码。
  • A NullPointerException 不是一个奇怪的错误。这将是最容易理解和调试的错误之一。

标签: java string exception nullpointerexception


【解决方案1】:

这些行都不能产生NullPointerException。我只能想象它在您代码的其他部分。将来,当您的问题与异常有关时,请发布整个堆栈跟踪。

编辑:好的,你指出它在process()。那你为什么发布这段代码,而不是process()

【讨论】:

    【解决方案2】:

    您在评论中说 b = unknown b,这意味着 this.getB()==null 或空字符串。我猜想您的 process(a,b) 方法中的某些内容正在尝试使用该原始 b 值。如果您再次执行 getB() 是否会重置该值?

    如果您发布您的 process(a,b) 方法,我们可以检查/确认,因为在我们看到实际代码之前,它只能是推测。

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2014-01-12
      相关资源
      最近更新 更多