Продолжить синтаксический анализ записей, если для какой-либо записи в BeanIO возникает исключение

Я использую BeanIO для преобразования плоского файла в список Object. Используя следующий фрагмент кода.

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

Но проблема в том, что если во время анализа какой-либо записи возникает исключение, оно немедленно прекращает обработку записей. Я хочу подавить такое исключение и хочу, чтобы оно продолжало обработку следующих записей.

Есть ли способ сделать это?

Одна вещь, которую я могу попробовать, это поместить in.read в тело блока while и обернуть его вокруг try/catch, но как тогда определить конечное условие. Кажется, нет метода, который сообщает конец записей.

Спасибо, Джитендра.


person RandomQuestion    schedule 19.04.2012    source источник


Ответы (1)


Ответ найден в справочной документации BeanIO. Я пропустил это раньше.

Это можно сделать, зарегистрировав свой собственный ErrorHandler в BeanReader.

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

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

person RandomQuestion    schedule 19.04.2012