如何捕获"意外的令牌END OF FILE"来自外部图书馆

时间:2016-12-20 05:11:17

标签: java json exception exception-handling

我正在使用JSON simple,当它正在读取包含JSON对象的文本文件时,它会抛出以下异常:

Exception in thread "main" Unexpected token END OF FILE at position 0.
at org.json.simple.parser.JSONParser.parse(JSONParser.java:257)
at org.json.simple.parser.JSONParser.parse(JSONParser.java:92)
at readjson.ReadJson.readFileToWriteJSON(ReadJson.java:121)
at readjson.ReadJson.main(ReadJson.java:40)

我不知道如何捕获此异常。有什么想法吗?

修改

以下是代码:

 private static void readFileToWriteJSON(final File folder) throws FileNotFoundException, IOException, ParseException  {

    for (final File fileEntry : folder.listFiles()) {

        if (fileEntry.isDirectory()) {
        readFileToWriteJSON(fileEntry);
        } else {
            try{
            String query=fileEntry.getName();


            fop=new FileOutputStream(file+"\\"+query+".txt");

            JSONParser jsonParser = new JSONParser();

           File file = new File(fileEntry.getPath());

           Object object = jsonParser.parse(new FileReader(file));//exception happens here.

           JSONObject obj= (JSONObject) object;

            parseJson(obj);

            for(String url:writeThis){
            fop.write(url.getBytes());
            fop.write(System.getProperty("line.separator").getBytes());
            }
            writeThis=new ArrayList<>();
        }
        }
        catch(){}//how to fill this part
    }

}

3 个答案:

答案 0 :(得分:0)

这是从库内部抛出到您的调用代码。所以找到从你的代码到这个错误抛出代码的调用行(在readjson.ReadJson.main(ReadJson.java:40))并在那里试一试..

答案 1 :(得分:0)

首先删除你的尝试并抓住他们在错误的地方 - 假设你想继续阅读其他文件。

然后将代码更改为

Object object = null;
try {
    object = jsonParser.parse(new FileReader(file));//exception happens here.
} catch (Exception e) {
   e.printStackTrace(); 
   continue;   // go to the top of the for loop
}

答案 2 :(得分:-1)

试试这个:

try {
    // your code
} catch (EOFException e) {
   // handle EOF exception
} catch(IOException e) {
    // handle not expected exception 
    e.printStackTrace(); 
}