环绕通知异常抛出疑问
老师,请问环绕通知这个方法抛出的异常最终是谁处理的?它作为一个切面,我们也不会手动去调用啊。什么类型的异常我们才需要向外抛出呢?
package com.imooc.spring.aop.aspect; import org.aspectj.lang.ProceedingJoinPoint; import java.text.SimpleDateFormat; import java.util.Date; public class MethodChecker { ////ProceedingJoinPoint是JoinPoint的升级版,在原有功能外,还可以控制目标方法是否执行 public Object check(ProceedingJoinPoint pjp) throws Throwable { try { long startTime = new Date().getTime(); Object ret = pjp.proceed();//执行目标方法,它有个返回值就是目标方法的返回值 long endTime = new Date().getTime(); long duration = endTime - startTime; //执行时长 if(duration >= 1000){ String className = pjp.getTarget().getClass().getName(); String methodName = pjp.getSignature().getName(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String now = sdf.format(new Date()); System.out.println("=======" + now + ":" + className + "." + methodName + "(" + duration + "ms)======"); } return ret; } catch (Throwable throwable) { System.out.println("Exception message:" + throwable.getMessage()); throw throwable; } } }
8
收起
正在回答 回答被采纳积分+1
1回答
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星