Java 在超级SV失败时在日志中添加错误行

Java 在超级SV失败时在日志中添加错误行,java,csv,supercsv,Java,Csv,Supercsv,我正在使用SuperCSV解析CSV文件。它工作完美无瑕。 我传递的CSV文件中可能包含一些无效记录。此时,是否可以记录未处理的行 List<InputBean> csvContentsList = new ArrayList<InputBean>(); ICsvBeanReader beanReader = new CsvBeanReader(fileReader, CsvPreference.STANDARD_PREFERENCE); InputBean bean =

我正在使用SuperCSV解析CSV文件。它工作完美无瑕。 我传递的CSV文件中可能包含一些无效记录。此时,是否可以记录未处理的行

List<InputBean> csvContentsList = new ArrayList<InputBean>();
ICsvBeanReader beanReader = new CsvBeanReader(fileReader, CsvPreference.STANDARD_PREFERENCE);
InputBean bean = null;
do {
    try {
        bean = beanReader.read(InputBean.class, header, getProcessors());
        if (bean != null)
            csvContentsList.add(bean);
    } catch (Exception e) {
        logger.error("Error in parsing the record:"+e.getMessage());
    }
} while (bean != null);
List csvContentsList=newarraylist();
ICsvBeanReader beanReader=新的CSVBBeanReader(文件阅读器,CsvPreference.STANDARD_首选项);
InputBean=null;
做{
试一试{
bean=beanReader.read(InputBean.class,header,getProcessors());
if(bean!=null)
添加(bean);
}捕获(例外e){
logger.error(“解析记录时出错:+e.getMessage());
}
}while(bean!=null);

在这段代码中,如果CSV文件包含无效记录,它将抛出一个错误,并被捕获到catch块中。怎么能打印出那个无效的记录?或者它的行号?

如果使用
beanreader.read(…)
方法处理CSV文件时有无效行,那么文档说明会抛出
SuperCsvException
,您可以使用
getCsvContext()方法从中询问
CsvContext
从中可以获得各种上下文信息,包括行号。所以,要更明确地捕捉到什么,并适当地处理它

相关文件:


如果您不喜欢捕获异常,也可以使用一个单元处理器来实现这一点,该处理器将抑制并收集每个异常。请参见示例。此处的异常为IllegalArgumentException,因为列数不匹配。。。无论如何,谢谢你的指点。