java - 如果 BeanIO 中的某些记录发生异常,则继续解析记录

标签 java bean-io

我正在使用BeanIO将平面文件转换为对象列表。使用以下代码片段。

while ((MyCustomRecord obj = (MyCustomRecord) in.read()) != null) {
         System.out.println(obj);
}

但是这样做的问题是,如果在解析某些记录时发生异常,它会立即停止处理记录。我想抑制这种异常并希望它继续处理下一条记录。

有办法做到这一点吗?

我可以尝试的一件事是将 in.read 放入 while block 的主体中​​并将其包裹在 try/catch 周围,然后我将如何检测结束条件。似乎没有方法可以告诉记录结束。

谢谢 吉腾德拉

最佳答案

在 BeanIO 引用文档中找到答案。我之前错过了。

可以通过在 BeanReader 中注册自定义 ErrorHandler 来完成。

in.setErrorHandler(new BeanReaderErrorHandlerSupport() {
            public void invalidRecord(InvalidRecordException ex) throws Exception {
                System.out.println(ex.getLocalizedMessage());
            } 
});

http://beanio.org/docs/reference/index.html#StreamValidation

关于java - 如果 BeanIO 中的某些记录发生异常,则继续解析记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238155/

相关文章:

java - 存储海量数据

java - Spring Batch 重复调用某个项目的处理器

java - BeanIo 无法读取特殊字符

java - 如何使用beanio在同一个值上使用多个@Field?

java - 当线程(不是我开始的)结束时如何通知我?

java - 并发只读HashMap

java - 静态方法 vs 非静态方法 java 更好的理解

Java 套接字流意外结束

java - BeanIO - 段操作

java - BeanIO unquotedQuotesAllowed 在 CSV 中不起作用