Метод @ Asyn c выполняется при весенней загрузке даже после выполнения в методе вызывающего объекта - PullRequest
0 голосов
/ 05 мая 2020
class ServiceImpl {
    @Autowired
    EmailService emailService;

    public void arr() throws Exception,CommonCustomException {
        int[] arr = { 1, 2, 3, 4 };
       try{
        for (int i = 0; i < arr.length() + 1; i++) {
            System.out.print(i + " ");
        }
        }
       catch(exception e)
       {
          throw new Exception();
       }

     try{
        emailService.sendMail("Subject of mail", "body of mail", "xuz@gmail.com", "abc@gmail.com");
         }
     Catch(CommonCustomException e)
       {
           throw new CommonCustomException("Exception occured while sending 
                   mail");
       }
    }
}

@EnableAsync
class EmailService {
    @Async
    public void sendMail(String subject, String body, String from, String to) {
        // Implementation of sendMail function
    }
}

Я использовал аннотацию @Async в почтовой службе для запуска почты, если в методе вызывающего абонента возникает какая-либо ошибка, почта запускается независимо от каких-либо исключений в методе вызывающего.

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

В приведенном выше примере for-l oop выдает исключение arrayIndexOutOfBoundException даже после того, как возникнет исключение, почта будет инициирована, поскольку это функция asyn c. Я не хочу, чтобы почта запускалась, если в методе arr () возникает исключение.

...