@Override
@Async
public void asyncExceptionTest() {
int i=1/0;
}
Как я могу зарегистрировать это с помощью среды Spring Async, не добавляя try catch для каждого метода async? Похоже, что он не передается в DefaultUncaughtExceptionHandler
как обычно.
Можно использовать стандарт подход 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;
}
}
}