无法在Java中修复Null指针异常

时间:2014-10-29 15:25:00

标签: java

我已经查看了这个问题Here,并按照答案进行了操作。然而,编译器仍在抱怨Null Pointer Exception。以下是关于编译器抱怨的代码块:

public class readLogger {
    DLQPush dlqPush = new DLQPush();
    public String values[];
    int condition = 2;
    public BufferedReader reader = null;

public void readFile() {
    try {
        reader = new BufferedReader(new FileReader(
                "/var/tmp/checkresults.log"));
    } catch (FileNotFoundException e) {
        System.err.println("ERROR: FILE NOT FOUND!\n");
    }
    String str = null;
    try {
        while ((str = reader.readLine()) != null) {
            if (str.trim().length() == 0) {
                continue;
            }
            values = str.split("\t");
            System.out.println(values[1] + values[2]);
            classifyStatus();

        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

编译器特别抱怨这一行:

while ((str = reader.readLine()) != null) {

这是我的主要课程:

import java.io.IOException;
//import org.dcm4che3.tool.storescu.*;

public class Main {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) {

        readLogger rLog = new readLogger();
        rLog.readFile();
    }
}

我已经在前面问题的链接中描述了必要的修复,但我的编译器仍在抱怨它:

ERROR: FILE NOT FOUND!

Exception in thread "main" java.lang.NullPointerException
    at readLogger.readFile(readLogger.java:25)
    at Main.main(Main.java:13)

没关系错误,因为我已经将它导出到JAR文件并将其放在Linux中但它仍然在Linux中抛出NullPointer。有没有人对如何修复NullPointer异常有任何想法?

1 个答案:

答案 0 :(得分:5)

当您在语句reader中调用null时,readLine变量为while ((str = reader.readLine()) != null) {,因为找不到该文件(请参阅您自己的print语句)。

因此,您通过在NullPointerException readLine引用上调用null来抛出BufferedReader

此处的最佳做法是,如果找不到文件,请停止执行readFile方法。

作为替代方案,您可能希望在调用null变量上的实例方法之前至少检查reader