Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么org.aopalliance.intercept.Joinpoint可丢弃?_Java_Spring_Aop_Spring Aop - Fatal编程技术网

Java 为什么org.aopalliance.intercept.Joinpoint可丢弃?

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();

我正在处理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?抛出异常应该是不够的?

要回答这个问题,我们需要查看
org.aopalliance.intercept.Joinpoint的目的,即

转到链中的下一个拦截器

这意味着它将拦截链中的下一个方法执行。调用的实际方法可以抛出任何类型的
异常
和/或
错误
(无论建议与否,都无法确保/限制方法不这样做)

因此,为了具有足够的通用性(并且与遗留/第三方/库代码兼容),AOPAlliance的开发人员必须有意识地决定抛出最高级别的类,即
Throwable


希望这有帮助

要回答这个问题,我们需要查看
org.aopalliance.intercept.Joinpoint#procedure
的目的,即(根据)

转到链中的下一个拦截器

这意味着它将拦截链中的下一个方法执行。调用的实际方法可以抛出任何类型的
异常
和/或
错误
(无论建议与否,都无法确保/限制方法不这样做)

因此,为了具有足够的通用性(并且与遗留/第三方/库代码兼容),AOPAlliance的开发人员必须有意识地决定抛出最高级别的类,即
Throwable

希望这有帮助