Spring Async Uncaught Exception Handler

@Override
@Async
public void asyncExceptionTest() {
    int i=1/0;
}

Как я могу зарегистрировать это с помощью среды Spring Async, не добавляя try catch для каждого метода async? Похоже, что он не передается в DefaultUncaughtExceptionHandler как обычно.

24
задан Andrii Abramov 20 June 2017 в 14:38
поделиться

1 ответ

Можно использовать стандарт подход Spring AOP

@Aspect
@Component
@Slf4j
public class AsyncHandler {

   @Around("@annotation(org.springframework.scheduling.annotation.Async)")
   private Object handle(ProceedingJoinPoint pjp) throws Throwable {
       try {
           Object retVal = pjp.proceed();
           return retVal;
       } catch (Throwable e) {
           log.error("in ASYNC, method: " + pjp.getSignature().toLongString() + ", args: " + AppStringUtils.transformToWellFormattedJsonString(pjp.getArgs()) + ", exception: "+ e, e);
           throw e;
       }
   }

}
0
ответ дан 28 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: