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

时间:2016-03-14 06:47:20

标签: java csv supercsv

我使用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块中。怎么可能打印出无效记录?或它的行号?

1 个答案:

答案 0 :(得分:0)

如果在使用beanreader.read(...)方法处理CSV文件时存在无效行,那么文档会说明SuperCsvException会引发CsvContext方法,getCsvContext()方法 <!-- Angular Material Dependencies --> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-animate.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-aria.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angular_material/0.11.2/angular-material.min.js"></script> 从中您可以获得各种上下文信息,包括行号。所以你应该更加具体地捕捉并妥善处理它。

相关文档:

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