при попытке реализовать Аспект, который отвечает за ловушку и регистрацию определенного типа ошибок, я изначально думал, что это возможно с помощью совета AfterTrowing. Однако кажется, что его совет не исключает исключения, но просто предоставляет дополнительную точку входа, чтобы что-то сделать с исключением.
Единственный совет, который также поймал бы рассматриваемое исключение, был бы AroundAdvice - либо это, либо я сделал что-то неправильно.
Может ли кто-нибудь утверждать, что действительно, если я хочу поймать исключение, я должен использовать AroundAdvice? Используемая конфигурация:
@Pointcut("execution(* test.simple.OtherService.print*(..))")
public void printOperation() {}
@AfterThrowing(pointcut="printOperation()", throwing="exception")
public void logException(Throwable exception) {
System.out.println(exception.getMessage());
}
@Around("printOperation()")
public void swallowException(ProceedingJoinPoint pjp) throws Throwable {
try {
pjp.proceed();
} catch (Throwable exception) {
System.out.println(exception.getMessage());
}
}
Обратите внимание, что в этом примере я поймал все Исключения, потому что это просто пример. Я знаю, что его плохая практика просто проглатывает все исключения, но для моего текущего варианта использования я хочу, чтобы один специальный тип исключения был просто зарегистрирован, избегая дублирования логики ведения журнала.