Java终止于if语句,退出值为0

Java终止于if语句,退出值为0,java,bufferedreader,terminate,filewriter,stringreader,Java,Bufferedreader,Terminate,Filewriter,Stringreader,我有一个程序,它使用while循环(条件是bufferedReader.readLine()!=null)从文件(有两行)中读取行,分配myJSONObject从文件读取的JSON,然后我有一个if语句(if(bufferedReader.readLine()!=null&&!bufferedReader.readLine.matches(DELETE_REGEX))如果这是真的(即,如果我们读取的行不是空的,并且我们不匹配正则表达式),那么在JSON上执行一些函数,该函数应该将新的JSON附加

我有一个程序,它使用while循环(条件是
bufferedReader.readLine()!=null
)从文件(有两行)中读取行,分配
myJSONObject
从文件读取的JSON,然后我有一个if语句(
if(bufferedReader.readLine()!=null&&!bufferedReader.readLine.matches(DELETE_REGEX))
如果这是真的(即,如果我们读取的行不是空的,并且我们不匹配正则表达式),那么在JSON上执行一些函数,该函数应该将新的JSON附加到一个文件中

我在一些try-catch块中有这个。它看起来有点像这样:

try{
    openFiles;
    while(buff.readLine()!=null){
          try {
              instatiateAndUseJSONParser;
              if(bufferedReader.readLine()!=null
                    &&!bufferedReader.readline.matches(DELETE_REGEX)) 
              {doSomeStuff;}
              else
              {continue;}
          } catch (AllTheExceptions e){e.printStackTrace}
     }
     closeFiles;
}catch(SomeMoreExceptions e){e.printStackTrace}
当我运行它时,它会到达iff语句,然后以退出值0终止(程序正常关闭)

为什么会这样?它不会靠近“继续”或挡块

如果我删除第二行,由于String Reader的第50行,我会得到一个NullPointerException,但我没有使用
StringReader
(我尝试导入它,但eclipse黄色在它下面加下划线,这不会改变任何内容)。调试时,它会弹出一个
StringReader的选项卡。(String)line:50
,只是说“找不到源代码”

我对Java还很陌生,所以我真的不知道发生了什么。如果能帮我澄清一下,我将不胜感激

谢谢!

每次调用
readLine()
时,它都会读取新行。因此,您可以在当前代码中每次迭代读取3行。您应该将第一次调用的结果分配给一个变量,并使用此变量:

String line = null;
while ((line = buff.readLine()) !=null) {
    try {
        instatiateAndUseJSONParser;
        if (line.matches(DELETE_REGEX)) {
            doSomeStuff;
        }
    } 
    catch (AllTheExceptions e){
        throw new RuntimeException(e);
    }
}

您还应该避免吞咽异常。

我认为我们无法给您准确的答案,除非您使用真实代码…或与真实代码行为相同的SSCE。
当我运行时,这是iff语句,然后以退出值0终止(程序正常关闭)
…这并不是对正在发生的事情的合理解释。但是,您发布的代码(很可能)与真实的代码有很大的不同,我们无法给你一个准确的解释到底发生了什么,以及是什么导致了它。@StephenC我的互联网机器和编码机器是分开的,所以做一个SSCE并不像可能的那么容易…我仍然认为JB解决了这个问题。太棒了,我会尝试一下。这修复了那个错误,但我有另一个我将单独处理。你知道它为什么会终止,然后根据从文件读取的内容抛出和异常吗?不。你没有提供真正的代码,没有提供文件,也没有提供异常堆栈跟踪。我没有任何水晶球。这很公平,我想知道这种行为是否是一个明确的信号有什么特别的,谢谢!