- 原始方法抛出异常后执行,如果原始方法没有抛出异常,无法执行
- 主要对原始方法中出现的异常,获取通知信息进行处理
语法
<aop:afterthrowing method="执行方法" pointcut="切入表达式" throwing="t"/>
<aop:afterthrowing method="执行方法" pointcut-ref="切入表达式id" throwing="t"/>
参数 |
描述 |
method |
在通知类中设置当前通知类别对应的方法 |
pointcut |
设置当前通知对应的切入点表达式,不能同时使用pointcut-ref |
pointcut-ref |
设置当前通知对应的切入点id,不能同时使用pointcut |
throwing |
自定义变量,注意的是 throwing 属性的值必须要方法的参数名一致,否则会报错 |
示例
- application.xml
<aop:aspect ref="adviceId"> <!--直接配置切入点--> <aop:afterthrowing method="afterThrowing" pointcut="execution(* com.exi.service.LogAspectHandler.*.*(..))"/> </aop:aspect> |
<aop:pointcut id="pt" expression="execution(* com.exi.service.LogAspectHandler.*.*(..))"/>
<aop:aspect ref="adviceId">
<!--使用公共切入点-->
<aop:afterthrowing method="afterThrowing" pointcut-ref="pt"/>
</aop:aspect>
- LogAspectHandler.java
public class LogAspectHandler {
public void afterThrowing(JoinPoint joinPoint, Throwable ex) {
Signature signature = joinPoint.getSignature();
String method = signature.getName();
// 处理异常的逻辑
log.info("执行方法{}出错,异常为:{}", method, ex);
}
}