У меня есть webapp с использованием Spring + Hibernate через JPA, Spring эффективно переводит все исключения с сохранением в вариации DataAccessException
.Поймать DataAccessExceptions с AOP
Я сейчас пытаюсь поймать эти DataAccessExceptions
в АОП срезом точек, как это:
@Aspect
public class AspectException {
@AfterThrowing(pointcut = "within(com.mypackage.dao..*)", throwing = "error")
public void catchException(Throwable error) {
MyOwnException e = new MyOwnException("ERROR!", error);
throw e;
}
}
Сейчас этот аспект работает, если в моей DAO я бросаю специальное исключение, но не будет работать с весны DataAccessExceptions
!
Любая идея, почему это происходит?
На самом деле я считаю, что трудно поверить, что это должно работать для одного типа исключения, а не для другого, если ваш параметр совет не не напечатал 'Throwable', как в вашем примере, но конкретного подтипа не соответствует «DataAccessException». Даже в [Руководстве по весне] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html#aop-advice-after-throwing) упоминается 'DataAccessException' как работающий пример для '@ AfterThrowing'. – kriegaex