Java 使用AOP捕获DataAccessException

Java 使用AOP捕获DataAccessException,java,spring,exception,aop,Java,Spring,Exception,Aop,我有一个webapp通过JPA使用Spring+Hibernate,Spring有效地将所有persistence异常转换为DataAccessException的变体 我现在尝试在AOP切入点中捕获这些DataAccessExceptions,如下所示: @Aspect public class AspectException { @AfterThrowing(pointcut = "within(com.mypackage.dao..*)", throwing = "error"

我有一个webapp通过JPA使用Spring+Hibernate,Spring有效地将所有persistence异常转换为
DataAccessException
的变体

我现在尝试在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中抛出一个自定义异常,那么这个特性就可以工作,但不能与Spring的
DataAccessExceptions
一起工作


你知道为什么会发生这种情况吗?

你有没有想过异常翻译


我想将所有持久性异常转换为我自己的一个异常。我可以问一下为什么要转换所有异常吗?类似这样的事情怎么样:另外,请看这个线程:我想将它们转换为一个带注释的@WebFault异常,其中包含WebService规范的Faultbean。我会看看那些链接,谢谢!事实上,我很难相信这适用于一种类型的异常,而不适用于另一种类型的异常,除非您的advice参数不是像您的示例中那样键入的
Throwable
,而是与
DataAccessException
不匹配的特定子类型。甚至还提到了
DataAccessException
,作为
@posterhrowing
的工作示例。