我正在处理Spring AOP,我的代码就像 -
@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?抛出异常应该不够?
答案 0 :(得分:0)
要回答这个问题,我们需要查看org.aopalliance.intercept.Joinpoint#proceed
的目的(按照docs )
继续进行链中的下一个拦截器。
这意味着它将拦截链中的下一个方法执行。调用时的实际方法可以抛出任何类型的Exception
和/或Error
(没有办法确保/限制方法不这样做是建议与否)。
因此,要足够通用(并且还与传统/第三方/库代码兼容),AOPAlliance的开发人员必须有意识地决定抛出最高级别的等级{{1} }。
希望这有帮助!