2012-04-19 4 views
1

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

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

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

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

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

Благодаря Jitendra

ответ

2

Найдено ответ в справочной документации 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

Смежные вопросы