Ответ будет основан на мнении. Вот что я бы сделал,
Не регистрируйте отклонения в файле журнала, потому что это может быть большим, и вам, возможно, придется повторно обработать их. Вместо этого создайте другой набор данных для отклоненных записей с указанием причины отклонения. Ваш процесс будет производить 2 набора данных - хорошие и отклоненные.
Исключение не следует использовать для управления потоком кода, хотя это возможно. Я бы использовал идею предиката / фильтра / IF-условия, которая будет проверять данные и отклонять те из них, которые не соответствуют условию предиката / фильтра / IF.
Если вы используете исключение, тогда связывайте его с обработкой отдельной записи, а не всей работы. Эту идею лучше избегать.