Java 为什么org.aopalliance.intercept.Joinpoint可丢弃?
我正在处理Spring AOP,我的代码如下-Java 为什么org.aopalliance.intercept.Joinpoint可丢弃?,java,spring,aop,spring-aop,Java,Spring,Aop,Spring Aop,我正在处理Spring AOP,我的代码如下- @Component public class MyClass implements MethodInterceptor{ @Override public Object invoke(MethodInvocation invocation){ //some code here try { return joinPoint.proceed();
@Component
public class MyClass implements MethodInterceptor{
@Override
public Object invoke(MethodInvocation invocation){
//some code here
try {
return joinPoint.proceed();
} catch (Throwable throwable) {
throw Throwables.propagate(throwable);
}
}
}
由于不推荐使用Throwable(因为它也包含错误),我希望避免这种情况。
然而,我很好奇为什么org.aopalliance.intercept.MethodInterceptor首先抛出throwable?抛出异常应该是不够的?要回答这个问题,我们需要查看
org.aopalliance.intercept.Joinpoint的目的,即
转到链中的下一个拦截器
这意味着它将拦截链中的下一个方法执行。调用的实际方法可以抛出任何类型的异常
和/或错误
(无论建议与否,都无法确保/限制方法不这样做)
因此,为了具有足够的通用性(并且与遗留/第三方/库代码兼容),AOPAlliance的开发人员必须有意识地决定抛出最高级别的类,即Throwable
希望这有帮助 要回答这个问题,我们需要查看org.aopalliance.intercept.Joinpoint#procedure
的目的,即(根据)
转到链中的下一个拦截器
这意味着它将拦截链中的下一个方法执行。调用的实际方法可以抛出任何类型的异常
和/或错误
(无论建议与否,都无法确保/限制方法不这样做)
因此,为了具有足够的通用性(并且与遗留/第三方/库代码兼容),AOPAlliance的开发人员必须有意识地决定抛出最高级别的类,即Throwable
希望这有帮助