有没有办法在抛出单元处理器异常后继续从 CSV 读取?我试图从文件中获取所有好的数据,用它做我需要的事情,并向用户报告存在哪些坏行(如果有)。例如,如果我有一个只有两列(名称、 Activity )的文件。 Name 只是一个字符串,而 active 是一个 boolean 值。在我的 CellProcessors 列表中,两者都不是可选的。如果单行的 Activity 列为空,我想在之后继续处理这些行。
Name, Active
Bob, 0
John, 1
Mary,
Harry, 1
在这种情况下,第 4 行 Mary 将失败。我想继续阅读到第 5 行。所有示例都显示使用 while 循环进行读取,直到 EoF,但我没有找到一种方法来获取当前的行数,因此我可以使用带有内部 try/catch block 的 for 循环。
最佳答案
我自己做了一些测试,然后想出了一个解决方法。这当然不理想。我希望上个月 Git 问题中提到的 tryRead 或 hasNext 版本能够实现,但这在那之前都有效。
boolean failed = false;
do {
try {
failed = false;
while( (myClassBean= beanReader.read(MyClass.class, processors)) != null ) {
//Process the bean as normal
}
}
catch (SuperCsvCellProcessorException sccpe) {
//process the exception
failed = true;
}
} while (failed);
bean 读取器在保持其在 csv 中的位置方面似乎没有任何问题,因此 do-while 的所有后续迭代都会从下一行(如果有)继续读取。当达到 EoF 时,两个循环都会根据需要终止。
关于java - 异常后继续 SuperCSV 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897977/