是否有方法在抛出单元处理器异常后继续读取CSV?我试图从一个文件中获取所有的好数据,用它做我需要的事情,并向用户报告出现了什么(如果有的话)坏行。例如,如果我有一个只有两个列的文件(name,active)。Name只是一个字符串,而active是一个布尔值。在我的CellProcessors列表中,两者都不是可选的。如果单个行的活动列为null,那么我希望以后继续处理这些行。
Name, Active
Bob, 0
John, 1
Mary,
Harry, 1在这种情况下,4号线玛丽将失败。我想继续读到第5行,所有的例子都显示了使用while循环进行读取,直到EoF和我都没有找到一种方法来获得出现的行数,这样我就可以使用带内部try/catch块的for循环。
发布于 2015-10-02 14:14:28
对自己做了些测试,我想出了一个解决办法。这肯定不太理想。我希望上个月在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的所有后续迭代都没有问题。当到达EoF时,两个循环都会按需要终止。
https://stackoverflow.com/questions/32897977
复制相似问题