当 SuperCSV 失败时在日志中添加错误行

adding the error line in log when SuperCSV fails

我正在使用 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);

在此代码中,如果 CSV 文件包含无效记录,则会抛出错误并在 catch 块中捕获。如何打印无效记录?或者它的行号?

如果在使用 beanreader.read(...) 方法处理 CSV 文件时有无效行,那么文档会说 SuperCsvException 被抛出,您可以从中使用方法 [=13] 询问 CsvContext =] 从这里你可以获得各种上下文信息,包括行号。因此,请更具体地了解您捕获的内容并适当地处理它。

相关文档:

https://super-csv.github.io/super-csv/apidocs/org/supercsv/io/ICsvBeanReader.html

https://super-csv.github.io/super-csv/apidocs/org/supercsv/exception/SuperCsvException.html#getCsvContext--

https://super-csv.github.io/super-csv/apidocs/org/supercsv/util/CsvContext.html