Вложено для цикла - обработка исключений - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть приложение SpringBoot, как показано ниже. Метод postConstruct здесь имеет вложенный цикл. Внутренний цикл for является дочерним для внешнего мастера. Один мастер может иметь более одного ребенка. Если один из дочерних элементов терпит неудачу, оба дочерних элемента необходимо откатить и перейти к следующей основной записи - это логика. Метод abc имеет бизнес-логику, которая может генерировать исключение БД или любое исключение, которое должно быть обработано. Методы доступны в слое serviceImpl, поэтому я выбрасываю исключение и ловлю в основном классе и перехожу к следующей строке. Выполнение цикла for не должно останавливаться, пока все основные записи не будут зациклены. В случае сбоя одного дочернего элемента обновите базу данных и продолжите выполнение следующего мастера ....

Какой эффективный способ обработки исключений в этом потоке.

@SpringBootApplication
@ImportResource("classpath:/config/applicationContext.xml")
public class TaxMain{
///..///
@PostConstruct
public void checkForTransactions() {
    for(Map.Entry<Long, List<TaxPaymentRecord>> entry : hashMap.entrySet())
    {
        List<TaxPaymentRecord> paymentMethods = entry.getValue();
        try{
        for(TaxPaymentRecord paymentMethod : paymentMethods){
            //paymentMethods gets updated here
            ....
        }
        }catch(){}
        try{
        abc(paymentMethods);
        def(paymentMethods);
        ghi(paymentMethods);
        }catch(){
        }
        }catch(TaxCustomException tx){
            // update flag to 'F' for failed ones to DB
        }
    }
}

Код сервисного уровня

@service
public class TaxServiceImpl{
    @Transactional
    public Boolean abc(List<TaxPaymentRecord> paymentMethods) throws TaxCustomException {


    ///
    couple of business logic, might throw null pointer exception, DB exception...
    ///

    }

    @Transactional
    public Boolean def(List<TaxPaymentRecord> paymentMethods) throws TaxCustomException {


    ///
    couple of business logic, might throw null pointer exception, DB exception...
    ///

    }
}

Любой вклад высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...