Как обрабатывать исключения, выбрасываемые из считывателя элементов?
Я хочу поймать исключения, выданные из программы чтения элементов (например, программа чтения не открыта, неправильные исключения токенов и т. Д.), И обработать ее. В настоящее время весенняя партия выбрасывает их как роковые, кроме как выходить из-под ног.
Пожалуйста, дайте мне знать, есть ли способ сделать это?
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
Задача решена!:)