NullPointerException,不引用任何对象

时间:2013-05-15 11:51:45

标签: java oop exception

我有一段代码,有时会抛出NullPointerException。到目前为止还不是很有趣。但是,异常发生在一行中,不引用任何对象。

    try
    {
      parser.parse(input);/*line 186*/ 
    }
    catch(Exception e)
    {
      //NPE happens in the next line?
      throw new SAXException("Error parsing document", e);/*line 190*/
    }

这里是Stacktrace

  java.lang.NullPointerException
    at com.tejoe.MyXMLParser.parse(MyXMLParser.java:190)
    at com.tejoe.MyXMLParser.parse(MyXMLParser.java:168)
    ....

在过去三个月中只发生过两次,代码至少运行了十万次。

我已经反编译了我的代码,以确保行信息是正确的,是的。

附加测试

SAXException似乎有些特别之处。我做了以下测试:

import org.xml.sax.SAXException;

public class Test
{
  public static void main(String[] args) throws Exception
  {
    new SAXException("Error", new NullPointerException()).printStackTrace();
  }
}

我得到了以下输出

java.lang.NullPointerException
  at Test.main(Test.java:7)
Caused by: java.lang.NullPointerException
  ... 1 more

解决方案: SAXException覆盖toString方法,返回原因Exception的名称。

现在我只是想知道,我没有得到生产环境中的输出(AIX JAVA)

3 个答案:

答案 0 :(得分:1)

自上次发布以来,您的代码必须已更改。这会弄乱行号,因为它们是基于编译时的代码。

从发布以来,您似乎已从该文件中删除了一些代码,这意味着行号大于它们应该的大小。

答案 1 :(得分:1)

我编写了以下代码并生成了空指针异常。它排在第45行,如下所示,

Exception in thread "main" java.lang.NullPointerException
    at inheritance.parent.Child.main(Child.java:45)

import org.xml.sax.SAXException;

public class Child  {

public static void main(String[] args) throws SAXException {

        try{
        Child c1 = null;
        c1.i=0;

        } catch(Exception e){
            throw new SAXException("Error", e); //Line : 45
        }
    }
}

您的代码错误是正确的。你需要找到你得到的对象。

答案 2 :(得分:0)

替换你的行:

throw new SAXException("Error parsing document", e);

e.printStackTrace();

你会找到正确的错误行。