这是我的doThrowing()方法 public Object doAround(ProceedingJoinPoint pjp) throws Throwable { System.out.println("doAround---->"); long time = System.currentTimeMillis(); Object retVal = pjp.proceed(); time = System.currentTimeMillis() - time; System.out.println("process time: " + time + " ms"); return retVal; } applicationContext.xml中对应的配置如下: <aop:config> <aop:aspect id="aspect4Loger" ref="loggerAspect"> <!--配置com.spring.service包下所有类或接口的所有方法--> <aop:pointcut id="businessService" expression="execution(public * com.spring.service..*.*(..))" /> <aop:before pointcut-ref="businessService" method="doBefore"/> <aop:after pointcut-ref="businessService" method="doAfter"/> <aop:around pointcut-ref="businessService" method="doAround"/> <aop:after-throwing pointcut-ref="businessService" method="doThrowing" throwing="ex"/> </aop:aspect> </aop:config> 我其他的方法比如doBefore(),doAround()都可以执行,就这个始终无法执行,请问为什么? |
|
为什么没人来
|
|
40分 |
<aop:after-throwing>是有异常出现的时候才执行的 你没有产生异常 当然不执行了~~
|
我程序中产生异常了,代码如下:
if(1==1) throw new IllegalArgumentException("测试异常"); 难道这样有问题? |
|
求回答啊,我真的有抛出异常,看楼上~ |
|
上面写的居然是doAround()方法!doThrowing()方法是这样的:
public void doThrowing(JoinPoint jp, Throwable ex) { System.out.println("doThrowing------>"); System.out.println("method " + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName() + " throw exception"); System.out.println(ex.getMessage()); logger.error(ex.getMessage()); } 顺便提一句,doAround()是可以执行的! |