Как обрабатывать исключения, выбрасываемые из считывателя элементов?

Я хочу поймать исключения, выданные из программы чтения элементов (например, программа чтения не открыта, неправильные исключения токенов и т. Д.), И обработать ее. В настоящее время весенняя партия выбрасывает их как роковые, кроме как выходить из-под ног.

Пожалуйста, дайте мне знать, есть ли способ сделать это?

1 ответ

Я столкнулся с той же проблемой, с которой я хотел поймать org.springframework.batch.item.file.FlatFileParseException брошенный FlatFileItemReader и выполнить некоторые пользовательские обработки и регистрации. Провел некоторое исследование и почти пришел к выводу, что мне, возможно, придется написать специальную программу чтения вместо программы чтения по умолчанию, которую я сейчас использую, пока я не наткнулся на жемчужину раздела в документации Spring Batch: http: //docs.spring. IO / пружинно-пакетный / ссылка / HTML /configureStep.html#interceptingStepExecution

Вы можете написать собственную реализацию ItemReadListener<T> интерфейс и перевернуть onReadError(Exception ex) метод, а затем зарегистрировать этот класс слушателя в соответствующем шаге. Таким образом, этот метод будет вызываться, когда читатель встречает исключение при чтении из файла. Ссылка на исключение будет также передана методу, с помощью которого вы можете делать все, что угодно, например, ведение журнала и т. Д. Аналогично, написание @OnReadError аннотированный метод также является альтернативой, если вы не хотите реализовать ItemReadListener интерфейс отдельно.

С другой стороны, если ваша цель - пропустить такие исключения, которые могут возникнуть при чтении, вы можете попробовать добавить следующее в конфигурацию чанка в XML:

<skippable-exception-classes>
     <include class="org.springframework.batch.item.file.FlatFileParseException"/>
</skippable-exception-classes>

Ссылка: http://docs.spring.io/spring-batch/reference/html/configureStep.html

Задача решена!:)

Другие вопросы по тегам